0

VelocityでSpringプロジェクトをセットアップしようとすると、次のエラーが発生します。

PageNotFound - No mapping found for HTTP request with URI [/SpringMVCVelocity/Enquiries/viewAllEnquiries] in DispatcherServlet with name 'mvc-dispatcher'

私は春のcontext.xmlを次のように設定しました-

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:webflow="http://www.springframework.org/schema/webflow-config"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/webflow-config
        http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.3.xsd">

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

    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
      <property name="resourceLoaderPath" value="/WEB-INF/view/"/>   
    </bean>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
      <property name="cache" value="false"/>
      <property name="prefix" value=""/>
      <property name="suffix" value=".vm"/>
      <property name="order" value="-1"/>
      <property name="exposeSpringMacroHelpers" value="true"></property>
    </bean>


    <mvc:annotation-driven/>

    <!-- Forwards requests to the "/" resource to the "welcome" view -->
    <mvc:view-controller path="/" view-name="welcome"/>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
      <property name="persistenceUnitName" value="ecommerce"/>
   </bean>
    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <!-- Configures Handler Interceptors -->   
    <mvc:interceptors>
        <!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>

    <!-- Saves a locale change using a cookie -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

    <!-- Application Message Bundle -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="/WEB-INF/messages/messages" />
        <property name="cacheSeconds" value="0" />
    </bean>

    <!-- 
        FLOW HANDLING
     -->

    <!-- Enables FlowHandler URL mapping -->
    <bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
        <property name="flowExecutor" ref="flowExecutor" />
    </bean>

    <webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry"/>

    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
        <property name="flowRegistry" ref="flowRegistry" />
        <property name="order" value="-1" />
    </bean>

    <webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
        <webflow:flow-location path="/WEB-INF/view/flows/flow.xml"/>
    </webflow:flow-registry>

    <webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" />

    <bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
        <property name="viewResolvers" ref="viewResolver" />
    </bean>

    <!-- 

       Bean Injections

    -->
    <bean id="carModelDao" class="ecommerce.dao.CarModelDao"/>

    <bean id="carController" class="ecommerce.controller.CarController">
        <property name="carModelDao" ref="carModelDao"/>
    </bean>

    <bean id="veloController" class="ecommerce.controller.VelocityController">
        <property name="carModelDao" ref="carModelDao"/>
    </bean>
</beans>

私のコントローラーは:

@Controller
@RequestMapping("/Enquiries")
@SessionAttributes({"enqList", "search"})

public class EnquiryController {

    private static final Logger logger = Logger.getLogger(EnquiryController.class);
    private PagedListHolder<Enquiry> enqList = null;
    private int pageSize = 10;

    @Autowired
    private EnquiryDao enquiryDao;

    @RequestMapping("/viewAllEnquiries")
    public String  getAllEnquiries(@RequestParam(required=false) String page, Model model) {

        if ("next".equals(page) && enqList != null) {
            enqList.nextPage();
        } else if ("previous".equals(page) && enqList != null) {
            enqList.previousPage();
        } else {
            // well there is no page parameter, so it must be a new request
            enqList = new PagedListHolder<Enquiry>(enquiryDao.getAllEnquiries());
            enqList.setPageSize(pageSize);
        }
        model.addAttribute("search", new Search());
        model.addAttribute("enqList", enqList);

        return "viewAllEnquiries";
    }

このコントローラーは呼び出されません。ただし、次の方法でウェルカムビューを正常に解決できます。

<mvc:view-controller path="/" view-name="welcome"/>
4

1 に答える 1

0

問題は解決しました。コントローラーをスキャンしておらず(context:component-scan)、SpringコンテキストでもBeanを配線していませんでした。

それで、それを修正するために、私はスプリングインジェクションを介してそれを追加しました:

<bean id="enquiryDao" class="ecommerce.dao.EnquiryDao"/>
<bean id="enquiryController" class="ecommerce.controller.EnquiryController">
    <property name="enquiryDao" ref="enquiryDao"/>
</bean>
于 2012-10-23T07:59:31.903 に答える