从控制器方法调用post方法(使用url模式)

时间:2014-03-16 09:50:02

标签: java spring spring-mvc

我有以下表格

<form name="fbForm" action="myIp/projectName/ControllerName/method" method="post">

    <input type="hidden" value="1" name="username">
    <input type="hidden" value="2" name="email">
    <input type="hidden" value="3" name="dob">
    <input type="hidden" value="4" name="sex">
        <input type="submit" value="submit" />
</form>

我的控制器方法

@RequestMapping(value = "/method" , method = RequestMethod.POST)
public String signup(@RequestParam String username,@RequestParam String email,@RequestParam String dob,@RequestParam String sex) {

    System.out.println(username);
    System.out.println(email);
    System.out.println(dob);
    System.out.println(sex);

    return "test";
}

如果我单击表单中的提交按钮,它可以正常工作并打印所需的输出。 现在我要做的是从另一个控制器方法调用这个注册方法

e.g。

@RequestMapping(value = "/anotherMethod" )
public void callSignup() {

    // code to call signup using url pattern (ControllerName/method) method from here with (username,email,dob,sex)

}

有可能吗?我怎么能这样做?

请回答示例代码

抱歉,我无法正确提问。我不需要通过方法名称调用方法,而是通过url模式

因此,应致电ControllerName/method而不是signup()

2 个答案:

答案 0 :(得分:1)

从另一个控制器调用一个控制器是不好的做法。

你应该做以下两件事之一:1)调用第二个控制器的方法调用的服务方法(假设有一个) 2)使用return "redirect:/anotherMethod"或您需要的任何内容向浏览器发送重定向HTTP响应

答案 1 :(得分:0)

虽然这有效(毕竟它只是一种Java方法),但我会反对它。使用具有不同语义的另一个公共入口点调用具有已定义语义的公共入口点违反了最不惊讶的原则。相反,您需要的逻辑应该被提取到从两个入口点调用的私有方法。