0

私はSpring3.0.6に基づくWebアプリを持っています。これはTomcat7.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

<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 に答える