0

我有一个基于 Spring 3.0.6 的 webapp,它在 Tomcat 7.0 上运行良好。

web.xml定义调度程序如下:

<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>

调度程序以通常的方式定义视图解析器:

<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"tiles-def.xml. 当我将浏览器指向 时/myapp/home.html,将打开 Tiles 页面。

如果我将<mvc:resources mapping="/resources/**" location="/resources/" />或添加<mvc:view-controller path="/" view-name="home.html"/>到调度程序 xml 文件中,将浏览器指向会/myapp/home.html导致 404。日志显示:

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

我究竟做错了什么?

非常感谢

4

1 回答 1

0

我的应用程序中的问题是由于自动视图名称解析。我在@Controller返回的注释方法中void,框架尝试使用请求路径猜测图块视图名称。

我修改了我的注释方法如下,返回一个String

@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";
}

通过此更改,一切正常。

于 2011-10-18T07:20:23.983 回答