[英]Spring - handle multiple forms submit with one controller
是否可以讓一個控制器在彈簧中處理多種形式?
例如,我有3個步驟注冊,用“/ register”url映射。 是否可以只有一個RegisterController可以處理所有注冊的表單提交?
你可以使用多動作控制器。在Spring Single Controller Handel Multipal方法中通過方法名稱解析器
<bean id="id" class="controller class"> <property name="name"><ref bean="service Name"/></property > <property
name="methodNameResolver"><ref bean="name of Resolver"/></property>
</bean>
------------------------------------------------------------------------ <bean id="name of Resolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings"> <props> <prop
key="/url.com">MethodName</prop> </props> </property> </bean> This can
be Help you use single controller
------------------------------------------------------------------------
這取決於您正在使用的控制器的樣式。 如果您使用Spring 2.0樣式的表單控制器(例如SimpleFormController
或AbstractFormController
的子類),那么您可能會遇到一些困難。 但是,如果你使用的是Spring 2.5風格的@Controller
,那么它們非常靈活,你應該能夠在一個控制器類中處理你想要的任何復雜性。
就像skaffman說你可以使用非常靈活的@Controller。 但是如果你正在編寫一個向導,你應該看一下AbstractWizardFormController。 它處理向導的所有步驟和驗證。 它還為每個表單提交保留相同的后備對象。 當向導處於最終操作時,您可以獲取此對象並在數據庫中更新它。
你可以在以下網址找到一個例子: http : //www.cs.bham.ac.uk/~aps/syllabi/2004_2005/issws/h04/spring.html#AbstractWizardFormController
問題例如,我有3個步驟注冊,用“/ register”url映射。 是否可以只有一個RegisterController可以處理所有注冊的表單提交?
建議的解決方案: Spring 3 - 使用servlet映射到控制器的Spring-mvc控制器。 使用您的網址請求中的映射,您將始終轉到同一個控制器。
您可以通過Spring DispatcherServlet創建映射到控制器的servlet和servlet映射。
web.xml中
<servlet>
<description>
</description>
<display-name>TestServ</display-name>
<servlet-name>main</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
在這種情況下,由於我的servlet名稱是test,它將是test-servlet.xml文件,該文件將進入根目錄下的WEB-INF文件夾。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="/registration/*" class="register.ResgisterController"/>
package registration;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import registration.User;
@Controller
public final class RegistrationController {
public RosterController() {
}
//Spring lets you You can access your spring mvc model from the controller automatically
@RequestMapping
public void list(Model model) {
//do something
}
//Extract a registration id from the request and you can use in your model
@RequestMapping
public void member(@RequestParam("registrationId") Integer id, Model model) {
//do something
}
}
您將不得不使用' MultiActionController ',但如果您將使用此控制器,則驗證移植會有一些復雜性。
解決類似問題的方法是@ http://www.scribd.com/doc/20156448/Multi-Action-Controller-With-Validation
您可以使用Spring webFlow並將控制器注釋為@controller
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.