2011-09-07 4 views
0

Tomcat 7.0에서 잘 작동하는 Spring 3.0.6을 기반으로하는 webapp가 있습니다.mvc : view-controller는 Spring Tiles2에서 PageNotFound를 발생시킵니다.

<bean id="tilesViewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.tiles2.TilesView" /> 
</bean> 

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
    <list> 
     <value>/WEB-INF/tiles-def.xml</value> 
    </list> 
    </property> 
</bean> 

내가 컨트롤러가 @RequestMapping("/home")로 주석하고에 정의 된 "home"보기 :

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

발송자는 일반적인 방법으로 뷰 리졸버를 정의

web.xml

는 다음과 같은 디스패처를 정의 tiles-def.xml. 브라우저에서 /myapp/home.html을 가리키면 타일 페이지가 열립니다.

나는 404 로그에 /myapp/home.html 결과에 브라우저를 내 디스패처 XML 파일에 <mvc:resources mapping="/resources/**" location="/resources/" /> 또는 <mvc:view-controller path="/" view-name="home.html"/>을 추가하는 경우는 말한다 : 내가 잘못 뭐하는 거지

21:34:22,128 WARN PageNotFound:947 – No mapping found for HTTP request with URI [/myapp/home.html] in DispatcherServlet with name 'dispatcher' 

?

덕분에 많은

+0

DispatcherServlet.doDispatch에 중단 점을 설정하고 진행 상황을 볼 수 있습니다. :) –

+1

안녕하세요, Boris, 디버깅하려했지만 Dispatcher 서블릿의 내부 작업을 이해하기가 꽤 복잡했습니다. 문제는 내 MVC 컨트롤러의 메서드가'void' 였고 문자열을 반환하지 않아 프레임 워크가 경로를 사용하여 뷰를 자동으로 해결하려고 시도했기 때문입니다. Tiles2 뷰 이름을 명시 적으로 리턴하는 것으로 변경하고 모든 것이 다시 작동했습니다. 나는 교훈을 배웠고, 봄은 아무것도 추측하지 못하게했다. ;-) – Ciaccia

+0

좋아. 결과를 답으로 게시하고 질문을 닫으십시오.)). –

답변

0

내 응용 프로그램의 문제는 자동보기 이름 확인 때문. 내 @Controller에 내 주석이 달린 메소드는 void을 반환했으며 프레임 워크는 요청 경로를 사용하여 타일보기 이름을 추측하려고했습니다. 모든 것이 잘 작동이 변경으로

@RequestMapping(value="/page", method = RequestMethod.GET) 
public String showForm(HttpServletRequest request, Model model) { 
    // TO BUSINESS LOGIC 

    // return tiles view name as configured in 'tiles-def.xml' 
    return "my_tiles_view_name"; 
} 

:

은 내가 String를 반환, 다음과 같은 내 주석 방법을 수정했습니다.