2010-09-03 87 views
0

空調用方法在Spring 3.0請求參數上的MultiActionController

如果我有一個jsp頁面上MultiActionController的兩個不同環節上的MultiActionController

<form:form method="POST"> 
    <a href="user.htm?action=add" style="color: blue;">Add</a> 
    <a href="user.htm?action=delete" style="color: blue;">Delete</a> 
</form:form> 

每個調用不同的方法,我得到請求參數爲空所以無法驗證值

String username=request.getParameter("username"); 
String password=request.getParameter("password"); 

我也嘗試uing一個按鈕,改變它看起來像一個鏈接,但在按鈕的情況下,點擊加入M ethod被調用兩次,requestparameter爲null,第二次調用正確的值,但是這兩次是在代碼中創建一個混亂也使這項工作我使用表單行動,這將不會在兩種不同方法調用的情況下工作

<form:form action="user.htm?action=add method="POST"> 
    <input type="submit" value="I have info"/>"> ---> should call delete method 
    <input type="submit" value="Click to send info"/> ---> should call add method 

    </form:form> 

要實現這一點沒有JavaScript的

我還設置PARAM reslover在XML文件的默認方法調用

我還是想說明我的問題忘了上面的代碼,我只是給一些例子

我有一個jsp頁面,它有兩個輸入文本字段和兩個鏈接,每個應該調用控制器的不同方法,這兩個方法將驗證輸入,並將重定向到另一個頁面簡單!

我一直在使用MultiActionController的原因....... 不幸的是,我必須繼續使用延伸的MultiActionController因爲同樣的jsp頁面中也有分頁這工作絕對沒控制器

因此,所有我婉一旦鏈接被單擊並重定向,相應的操作就是簡單地實現服務器和客戶端驗證。

請給我一些例子來前進在這...

我想要實現這個W/O的JavaScript我在這裏得到了 這個例子,但我的問題是,爲什麼requestParameter是空

http://www.goospoos.com/2009/11/spri...oller-example/

這裏是我的代碼

<bean id="myExampleController" class="com.ui.controller.MyExampleController"> 
      <property name="methodNameResolver"> 
      <ref bean="paramResolver" /> 
     </property> 
     <property name="validators" ref="myExampleValidator"/>  
    </bean> 

    <bean id="paramResolver" 
     class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> 
<property name="defaultMethodName" value="loadPage"></property> 
<property name="paramName"> 
<value>action</value>    
</property>  
</bean> 

<bean id="myExampleValidator" class="com.validator.MyExampleValidator" /> 

控制器

public ModelAndView validateValues(HttpServletRequest request, HttpServletResponse response) throws Exception{ 
ModelAndView mav=null; 
----> this is null ??? 
String value1=request.getParameter("textvalue1"); 
String value2=request.getParameter("textvalue2"); 


mav = new ModelAndView("myexample"); 
mav=getPageData(request, false); 
return mav; 

} 

JSP頁面

<form action="myexample.htm" method="post"> 

input type="text" name="textvalue1" size="20" /> 
input type="text" name="textvalue2" size="20" /> 
</form> 

<a href="myexample.htm?action=validateValues">click to validate</a> 

---------->有什麼不對的,如果上面提到的網站可以調用的方法和工作正常,爲什麼我不能得到請求參數

回答

0
Then below works for me 

UI

<form:form action="user.htm?action=add method="POST"> 
<input type="submit" name="add"/> 

服務器端

(WebUtils.hasSubmitParameter(request, "add") 
0

你應該考慮重新工作你的控制器。您所需的操作應根據語義標識符進行。對於CRUD(創建,讀取,更新,刪除)操作爲用戶實體,一個我的設置,如RequestMappings:

  • /用戶(root索引頁,列出所有用戶)
  • /用戶/添加(創建新的用戶)
  • /用戶/刪除/ {ID}(刪除由ID用戶)
  • /用戶/ {ID}(找到由ID用戶)

在控制器級別,你可以通過以下方式完成:

@RequestMapping(value="/user") 
public class UserController 
{ 
    @RequestMapping(method=RequestMethod.GET) 
    public String getListUsers() // default page that is resolved by /user 
    { 
     return "user/list"; // used by view resolver 
    } 

    @RequestMapping(value="/add.html" method=RequestMethod.GET) 
    public String getAddUser(Model model) 
    { 
     //add person form backing entity to model 
     return "user/add"; // used by view resolver to locate view 
    } 

    @RequestMapping(value="/add.html" method=RequestMethod.POST) 
    public String postAddUser(@ModelAttribute person) // other objects for errors, etc. 
    { 
     // add person, validate person, etc. 
     return "redirect:/user"; // redirects to index 
    } 
} 

等等......你遵循這些模式對於其他的URI

+0

註釋不能使用。框架已被設計爲使用XML配置你可以給我使用MultiActionController的例子嗎? – Gauls 2010-09-06 12:25:28

+0

你是什麼意思設計使用XML配置?註釋也是通過spring配置來配置的。上面的例子是一個多動作控制器。 – Droo 2010-09-10 02:17:00