복붙노트

[SPRING] Spring MVC에서 리다이렉트

SPRING

Spring MVC에서 리다이렉트

내 컨트롤러에서이 기능을 사용할 수없는 이유는 무엇입니까?

@RequestMapping(method = RequestMethod.POST)
public String onSubmit(
    Model model,
    @ModelAttribute("form") Form form,
    BindingResult result, HttpServletRequest request)
    throws IOException, WriteException, BiffException {

    if (result.hasErrors()) {
        return "redirect:index.html";
    }

 }

나는 얻다:

나는이 일을 전에해야 해. 왜 지금 안돼?

해결법

  1. ==============================

    1.이 방법을 사용해보십시오.보기 분석기를 올바르게 구성했으면 제대로 작동합니다.

    이 방법을 사용해보십시오.보기 분석기를 올바르게 구성했으면 제대로 작동합니다.

     return "redirect:/index.html";
    
  2. ==============================

    2.redirect :와 forward : 접두어는 UrlBasedViewResolver에 의해 처리되므로, InternalResourceViewResolver와 같은 뷰 확인자 중에서 적어도 하나의 UrlBasedViewResolver의 하위 클래스가 있어야합니다.

    redirect :와 forward : 접두어는 UrlBasedViewResolver에 의해 처리되므로, InternalResourceViewResolver와 같은 뷰 확인자 중에서 적어도 하나의 UrlBasedViewResolver의 하위 클래스가 있어야합니다.

  3. ==============================

    3.응답을 완료하기 위해 Spring MVC는 viewResolver (예 : axtavt metionned, InternalResourceViewResolver)를 사용하여 특정 뷰를 가져온다. 따라서 첫 번째 단계는 viewResolver가 구성되어 있는지 확인하는 것입니다.

    응답을 완료하기 위해 Spring MVC는 viewResolver (예 : axtavt metionned, InternalResourceViewResolver)를 사용하여 특정 뷰를 가져온다. 따라서 첫 번째 단계는 viewResolver가 구성되어 있는지 확인하는 것입니다.

    둘째, 리디렉션 URL (리디렉션 또는 전달)에주의를 기울여야합니다. "/"로 시작하는 URL은 애플리케이션에서 절대 URL임을 의미합니다. 지가 (Jigar)

    return "redirect:/index.html";  
    

    작동해야합니다. 보기가 응용 프로그램의 루트에서 찾으면 Spring이 찾을 수 있습니다. 귀하의 질문에있는 것과 같이 "/"가없는 URL은 URL과 관련이 있습니다. 그것은 이전에 효과가 있었고 지금은 효과가없는 이유를 설명합니다. "리디렉션"을 호출하는 페이지가 우연히 루트에 위치하면 작동합니다. 그렇지 않다면 Spring은 뷰를 찾을 수없고 작동하지 않는다.

    다음은 Spring의 RedirectView 메소드의 소스 코드이다.

    protected void renderMergedOutputModel(  
    Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)  
    throws IOException {  
      // Prepare target URL.  
      StringBuilder targetUrl = new StringBuilder();  
      if (this.contextRelative && getUrl().startsWith("/")) {  
        // Do not apply context path to relative URLs.  
        targetUrl.append(request.getContextPath());  
      }  
      targetUrl.append(getUrl());  
    
      // ...  
    
      sendRedirect(request, response, targetUrl.toString(), this.http10Compatible);  
    }  
    
  4. ==============================

    4.dispatcher-servlet.xml에서 이것을 변경하십시오.

    dispatcher-servlet.xml에서 이것을 변경하십시오.

    <!-- Your View Resolver -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basenames" value="views" />
        <property name="order" value="1" />
    </bean>   
    <!-- UrlBasedViewResolver to Handle Redirects & Forward -->
    <bean id="urlViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
        <property name="order" value="2" />
    </bean>        
    

    무슨 일이 일어날 지 분명히 여기에 설명되어 있습니다 http://projects.nigelsim.org/wiki/RedirectWithSpringWebMvc

  5. ==============================

    5.이 시도

    이 시도

    HttpServletResponse response;       
    response.sendRedirect(".../webpage.xhtml");
    
  6. ==============================

    6.Axtavt 대답이 맞습니다.

    Axtavt 대답이 맞습니다.

    다음은 리졸버의 모양입니다 (주석 기반).

        @Bean
    UrlBasedViewResolver resolver(){
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
    
        resolver.setPrefix("/views/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
    
        return resolver;
    }
    

    분명히 views 디렉토리의 이름은 프로젝트에 따라 변경되어야합니다.

  7. ==============================

    7.속성 파일에 urlBasedViewResolver를 정의 할 수 있습니다.

    속성 파일에 urlBasedViewResolver를 정의 할 수 있습니다.

    excel.(class)=fi.utu.seurantaraporttisuodatin.service.Raportti  
    index.(class)=org.springframework.web.servlet.view.urlBasedView  
    index.viewClass =org.springframework.web.servlet.view.JstlView  
    index.prefix = /WEB-INF/jsp/  
    index.suffix =.jsp
    
  8. ==============================

    8.나는 이것이 늦었다는 것을 알고 있지만 경로가 아닌 파일로 리다이렉션을 시도해야한다. 하하

    나는 이것이 늦었다는 것을 알고 있지만 경로가 아닌 파일로 리다이렉션을 시도해야한다. 하하

  9. from https://stackoverflow.com/questions/4584410/redirect-in-spring-mvc by cc-by-sa and MIT license