-1

Spring で ApplicationContext ファイルを分割しようとしています。

例のために。ファイルは、すべてのエントリを含む testproject-servlet.xml です。ここで、この単一のファイルを次のような論理グループに従って複数のファイルに分割したいと思います: group1-services.xml、group2-services.xml

web.xml に次のエントリを作成しました。

<servlet>
    <servlet-name>testproject</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/group1-services.xml, /WEB-INF/group2-services.xml
        </param-value>
    </init-param>       
    <load-on-startup>1</load-on-startup>
</servlet>

私は SimpleUrlHandlerMapping を次のように使用しています。

<bean id="simpleUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="order" value="0"/>
    <property name="mappings">
    <props>
        <prop key="/register.htm">RegisterController</prop>             <prop key="/payroll_services.htm">PayrollServicesController</prop>
    </props>
    </property>
</bean>

また、コントローラーを次のように定義しています。

<bean id="PayrollServicesController" class="com.triforce.b2bseek.businessservices.controller.PayrollServicesController">
      <property name="facadeLookup" ref="FacadeLookup"/>
      ..
      ..
      </property>
</bean> 

問題は、ApplicationContext ファイル「testproject-servlet.xml」を 2 つの異なるファイルに分割し、上記のエントリを「group1-services.xml」に保持したことです。大丈夫ですか?個別の .xml ファイルでの使用に基づいて、物事を論理的にグループ化したい。

しかし、アプリケーション内のページにアクセスしようとすると、次のエラーが発生します。

org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping for [/TestProject/payroll_services.htm] in DispatcherServlet with name 'testproject'

解決方法を教えてください。

前もって感謝します !

4

5 に答える 5

0

各ファイルに次のようなものを含める必要があります。

<context:component-scan base-package="com.example.dao" />

ファイルから欠落している場合、注釈付きのクラスはそのファイルのコンテキストでは認識されていないようです。

詳細については、ドキュメントを再確認してください。

于 2009-03-05T21:04:36.460 に答える
0

DispatcherServlet のハンドラー マッピングが正しくないか、間違った URL を使用しています。SimpleUrlHandlerMapping 構成のレイアウトを修正すると、何を変更すればよいかがわかります。

于 2010-05-27T14:54:13.010 に答える
0

私はそれがあなた自身の問題だとは思わcontextConfigLocationない

ディスパッチャーは送信先を知る必要がpayroll_servives.htmあり、このパターンで何をすべきかを知っている適切なハンドラーを見つけることができないと思います。

参考資料を見る

*.htm本当にファイルをディスパッチャ サーブレットに一致させたいですか?

注釈ベースのコントローラー ( @Controller) を使用している場合は、次のような行が必要です。

<context:component-scan base-package="org.springframework.samples.petclinic.web"/>

これにより、次のような注釈が付けられたクラス/メソッドを検索する、適切な注釈ベースのハンドラーがインストールされます。

@Controller
public class PayrollController {
     @RequestMapping("payroll_services.htm")
     public ModelAndView payrollServices() {
         ....
     }
}

そうではなく、より伝統的なハンドラー/コントローラーを使用している場合は、XML を使用してこれを定義する必要があります。この投稿の前半の参照ドキュメントのリンクでは、次の 2 つのハンドラーについて言及されていますSimpleUrlHandlerMappingBeanNameUrlHandlerMapping

おそらく、ハンドラー/コントローラー XML のスニペットで質問を更新した場合、これが役立つでしょうか?

于 2009-02-24T11:36:26.153 に答える
0

ContextLoaderListener を web.xml に追加しましたか? 私はそれを見ません:

   <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
于 2009-02-24T13:27:44.043 に答える