2010-09-03 66 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