tiles2定义不适用于ControllerClassNameHandlerMapping

时间:2011-01-28 00:02:28

标签: spring spring-mvc tiles tiles2 url-mapping

我正在使用ControllerClassNameHandlerMapping来避免显式地将URL映射到控制器,到目前为止它工作正常。我在index.jsp中有一个链接到welcome.html,它正确映射到welcomeController,其中包含以下内容:

    setCommandClass(User.class);
    setCommandName("user");
    setSuccessView("homeView");
    setFormView("welcomeView");

问题在于,当我尝试使用该URL在tiles.xml定义中添加一个tile:

<definition name="welcome" extends="base.definition">
    <put-attribute name="title" value="Welcome!"/>
    <put-attribute name="body" value="/WEB-INF/jsp/welcomeView.jsp"/>
</definition>

我在dispatcher-servlet.xml中声明的唯一tile bean是:

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

到目前为止,我尝试使用tiles.xml文件进行了许多排列,但没有成功。视图加载正确,我在控制台中没有错误,但瓷砖无处可见。 我错过了什么?

提前致谢(:

2 个答案:

答案 0 :(得分:0)

看起来您可能没有ViewResolver配置的磁贴。来自documentation

To be able to use the views you have to have a ViewResolver 
just as with any other view technology used with Spring.

您可以选择UrlBasedViewResolverResourceBundleViewResolver

看起来目前它正在将视图名称(welcomeView)解析为相应的jsp(welcomeView.jsp),因此您无法获得切片。

答案 1 :(得分:0)

我的视图解析器声明如下

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.UrlBasedViewResolver"
      p:prefix="/WEB-INF/jsp/"
      p:suffix=".jsp"
      p:viewClass="org.springframework.web.servlet.view.tiles2.TilesView"
/>