1

struts 1.x に既存のプロジェクトがあり、次の手順で Spring MVC をそれに統合しようとしていることに注意してください。

私は、展開時にサーブレットを読み取り、サーバーの起動時にjarファイルからそれぞれのコントローラークラスをロードすることができ、コントローラークラスに関する次の情報を提供するmavenプロジェクトを持っています:

[org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] 拒否された Bean 名 'SSOController': URL パスが特定されていません

URL をロードしていないように見えるため、安らかな Web サービス呼び出しを行うことができません。

私のweb.xmlには次のエントリがあります:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/hello.do</url-pattern>
</servlet-mapping>

Dispatcher Servlet には次のエントリがあります。

<context:annotation-config />
<context:component-scan base-package="com.ga.action.controller" />

<mvc:resources location = "/resources/" mapping = "/resources/**" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean> 



<!-- JAXB2 marshaller. Automagically turns beans into xml -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.ga.action.controller.PEMUtil</value>
</list>
</property>
 </bean>

コントローラ クラスのコードは次のとおりです。

@Controller
@RequestMapping("/hello.do")
public class TestController {

    @RequestMapping(method = RequestMethod.GET, value = "/")
    public @ResponseBody String  printTokenMessage(
            @RequestParam("nLiveToken") String message, 
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        System.out.println(message);
    }
}
4

2 に答える 2

2

外部 jar ファイル コントローラーには @Conteroller アノテーションの代わりに XML 構成を使用します。サーバー クラス ローダーでは @Controller アノテーションを使用できないためです。 http://forum.spring.io/forum/spring-projects/web/108774-controllers-from-external-jar

于 2014-01-30T11:02:37.233 に答える
0

例外は BeanNameUrlHandlerMapping の使用を示しているため、コンテキストには/hello.doという名前の Bean が必要です。

@RequestMappingアノテーションを使用しているので、デフォルトでアノテーション駆動のハンドラー マッピングが有効になると想定していると思います。そうではありません。ServletDispatcherがハンドラー マッピングを検出しない場合、BeanNameUrlHandlerMappingが作成れます。

アプリケーションで注釈を使用する場合は、定義する必要があります

<mvc:annotation-driven />

コンテキスト構成で。

于 2013-10-29T08:17:28.890 に答える