1

我正在SimpleFormController使用 Hibernate 与 Spring MVC 3.0.2 一起在 JSP 中开发应用程序。一切都很好。我还Validator用于验证服务器端的表单。它也进展顺利。

现在,我需要以 Ajax 为例,当从下拉列表中选择一个国家<form:select><form:option></form:option></form:select>

我已经在某些地方使用 Ajax 完成了这些事情,但还没有使用 Spring MVC。我浏览了很多SimpleFormController关于 Google 的教程/文章,但没有一个使用 Ajax。我找不到关于如何将 Ajax 与SimpleFormController.

使用带注释@Controller的控制器(@RequestMapping

但是SimpleFormController,对于如何在 Spring 控制器中处理 Ajax 请求(要映射哪些方法以及如何映射),我没有任何确切的想法。使用SimpleFormController, 我通常与onSubmit(),showForm()referenceData()方法相关联。

您能否公开一些关于如何发出 Ajax 请求SimpleFormController、可以映射哪些方法以及如何映射的想法?(我不再想要完整的代码了。一个非常简单的示例(当且仅当它可能时)或者更具体的链接,其中解释了 Ajax 的使用SimpleFormController对我来说已经足够学习了)。

4

2 回答 2

6

你总是可以有一个单独的@Controller 来处理 ajax 请求。如果您可以在视图上使用自定义 jsp,则没有什么可以阻止您处理页面上的 ajax 请求。只需将选择框的 onchange 事件绑定到指向您创建的另一个控制器的 ajax 调用。

就保持它绑定到那个 SimpleFormController 而言,我认为这是不可能的,但是如果您创建一个表单将使用的新 RESTful 控制器,那么网站的其他部分也将能够使用这个新控制器。

于 2012-08-02T13:33:19.603 回答
2

作为对 dardo 的回答的补充,可以同时使用 spring MVC 2 和 MVC 3 控制器,但设置起来有点棘手。

为了在同一个 Spring 上下文中同时使用SimpleFormController@Controller控制器,我习惯了以下定义:

<!-- ======== MVC Spring 3.x ======== -->

<!-- Scans within the base package of the application for @Components to configure as beans @Controller, @Service, @Configuration, etc. -->
<context:component-scan base-package="com.your.package" />

<!-- Enables the Spring MVC @Controller programming model -->
<!-- It's a shortcut equivalent to the (more complete) bean definition below (see bean AnnotationMethodHandlerAdapter).-->
<!--<mvc:annotation-driven />-->

<!-- This HandlerAdapter will register spring 3.x controllers (@Controller) into the DispatcherServlet -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <array>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="writeAcceptCharset" value="false"/>
            </bean>
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </array>
    </property>
</bean>

<!-- This HandlerMapping allows to map urls defined in @RequestMapping annotations to the corresponding controllers -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
</bean>

<!-- ======== MVC Spring 2.x ======== -->

<!-- This HandlerAdapter will register spring 2.x controllers (@Controller) into the DispatcherServlet -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

<!-- Url mapper -->
<bean id="urlMapper" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="urlMap">
        <map>
            <entry key="/foo.do" value-ref="fooController" />
            <entry key="/bar.do" value-ref="barController" />

            ...
        </map>
    </property>
</bean>
于 2012-08-08T09:11:40.907 回答