Request参数是MultiActionController上的null调用方法

时间:2010-09-03 16:00:49

标签: java html spring spring-mvc

在Spring 3.0中

如果我有一个带有两个不同链接的jsp页面,每个链接在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>
在MultiActionController上的

我将请求参数设为null,因此无法验证值

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

我也尝试了一个按钮并将其更改为看起来像一个链接但是在按钮单击的情况下,add方法被调用两次,其中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的情况下实现这一目标

我还在xml文件中设置了param reslover,默认方法是调用

让我再次解释我的问题忘记上面的代码我只是举了一些例子

我有一个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>

----------&GT;如果上面提到的网站可以调用一个方法并且工作正常,为什么我无法获取请求参数,这有什么问题

2 个答案:

答案 0 :(得分:0)

您应该考虑重新使用控制器。您的所需操作应在上下文中属于语义标识符。对于用户实体的CRUD(创建,读取,更新,删除)操作,我设置了一个RequestMappings,如:

  • / user(root用户索引页面,列出所有用户)
  • / user / add(创建新用户)
  • / user / delete / {id}(按ID删除用户)
  • / user / {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的模式

答案 1 :(得分: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")