Tiles と Spring MVC は初めてです。ディスプレイに問題があります (同様の問題をいくつか調べましたが、「私の問題」の解決策は見つかりませんでした)。これが私の「tiles-servlet.xml」構成です( と で試しましたUrlBasedViewResolver
)TilesViewResolver
。
....
<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.tiles3.TilesView</value>
</property>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
<value>/WEB-INF/tiles-booking.xml</value>
</list>
</property>
</bean>
....
タイルの定義を含む「tiles.xml」
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="base.definition" template="/WEB-INF/tiles/template/defaultLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/tiles/template/defaultHeader.jsp" />
<put-attribute name="search" value="/WEB-INF/search/searchCriteria.jsp" />
<put-attribute name="searchResults" value="/WEB-INF/search/searchResults.jsp" />
<put-attribute name="unitDetails" value="/WEB-INF/search/unitDetails.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/template/defaultFooter.jsp" />
<put-attribute name="body" value="/WEB-INF/tiles/template/defaultContent.jsp" />
</definition>
<definition name="indexPage" template="/WEB-INF/tiles/template/simpleLayout.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/template/defaultHeader.jsp" />
<put-attribute name="title" value="Welcome to Venue Bookings" />
<put-attribute name="indexPage" value="/WEB-INF/jsp/indexPage.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/template/defaultFooter.jsp" />
</definition>
<definition name="searchForm" extends="base.definition">
<put-attribute name="title" value="Search form" />
<put-attribute name="search" value="/WEB-INF/search/searchCriteria.jsp" />
<put-attribute name="searchResults" value="/WEB-INF/search/searchResults.jsp" />
<put-attribute name="unitDetails" value="/WEB-INF/search/unitDetails.jsp" />
</definition>
<definition name="bookConfirmationForm" extends="/WEB-INF/tiles/template/bookingLayout.jsp">
<put-attribute name="title" value="Booking Confirmation" />
<put-attribute name="booking" value="/WEB-INF/search/configmBooking.jsp" />
</definition>
</tiles-definitions>
指定されたすべての JSP ファイルが定義され、機能しており、利用可能です。それらはすべて、問題なく、しばらくの間静かに機能しています。ただし、昨日、予約用の新しいページを表示するように定義しました。私はエラーに直面しています:
- 定義「bookConfirmationForm」にコメントすると (上記のように)、すべて正常に動作します。奇妙なことに、この定義を有効にすると、ホームページ自体の問題に直面します ('indexPage' ビューは私の開始ページです)。
- 上記の定義にコメントすると、上記のビューに到達するまで問題なく動作し、明らかにそこで失敗します。
例外は次のとおりです。
org.apache.jasper.JasperException: javax.servlet.ServletException: Could not resolve view with name 'indexPage' in servlet with name 'tiles'
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause: javax.servlet.ServletException: Could not resolve view with name 'indexPage' in servlet with name 'tiles'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190)
最後に、私のコントローラーメソッド:
@RequestMapping(value = "/index")
public ModelAndView indexPage() {
Map<String, Object> model = new HashMap<String, Object>();
....
model.put("command", new SearchCriteriaBean());
return new ModelAndView("indexPage", model);
}
@RequestMapping(value = "/checkAvailability", method = RequestMethod.GET)
public ModelAndView checkAvailability(@ModelAttribute("agreedBookingRequest")
UnitBookingAgreementBean agreedBookingRequest, HttpSession session) {
.....
return new ModelAndView("bookConfirmationForm", model);
}
間違いはばかげたものに違いないと思いますが、私にはそれがわかりません。tiles2 も試してみましたが、役に立ちませんでした。