RequestedMapping包含多个参数

时间:2017-08-27 10:19:07

标签: java html5 jsp spring-mvc spring-boot

我有一个带有dropdownmenu的jsp页面,提交和取消2个按钮。 根据下拉列表的值和单击的按钮,应该打开另一个jsppage。

在我的控制器中,我使用了一个请求映射,其中包含dropdown和butto的值作为参数,因此对于取消,这将是@RequestMapping(param ="取消")

所以当url等于?cancel = true时,方法会被执行,但是当我点击我的取消按钮时,url是?cancel =,这会产生404.如何让它返回true?

另外,如果我有第二个参数,我是否必须将其包含在我的陈述中,还是只能使用年龄?我试过了两个并且更好了。

最后,如果我必须包含所有参数,我可以使用通配符作为值吗?

我包含了我的代码,但请记住我正在尝试我的僵尸,所以我的控制器类还没有完成。

ageSelector.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Select your age</title>
</head>
<body>
<form>
    &nbsp; &nbsp; &nbsp;<button type="submit" name="submit"    
    formaction="submit">submit</button> 
    &nbsp; &nbsp; &nbsp; &nbsp; 
    <button type="cancel" name="cancel" formaction="cancel">cancel</button>
</form>
</body>
</html>

我记得我删除了我的下拉列表进行测试...

我的控制器类:

@Controller
@RequestMapping("ages")
public class AgeController {
    @RequestMapping(params="submit")
    public String handleSubmit(){
        return "childern";
    }

    @RequestMapping(params="cancel")
    public String handleCancel(){
        return "cancel";
    }

    @RequestMapping()
    public String handleDefault(){
        return "ageSelection";
    }
}

我认为这是关于你需要的信息。 对不起我糟糕的英语,我不是本地人。

1 个答案:

答案 0 :(得分:0)

您可以在同一页面上拥有两个不同的提交表单:

<form>
    <button type="submit" name="submit" formaction="submit">submit</button> 
</form>
<form>
    <button type="submit" name="cancel" formaction="cancel">cancel</button>
</form>
顺便说一句,最好让这两个动作通过路径而不是参数(更自然的方式)映射到控制器内的不同方法:

<form name="submitionForm" action="submit">
    <button type="submit">submit</button> 
</form>
<form name="cancellationForm" action="cancel">
    <button type="submit">cancel</button>
</form>

然后在你的控制器中:

@Controller
@RequestMapping("ages")
public class AgeController {

    @RequestMapping("/submit")
    public String handleSubmit(){
        return "childern";
    }

    @RequestMapping("/cancel")
    public String handleCancel(){
        return "cancel";
    }

    @RequestMapping
    public String handleDefault(){
        return "ageSelection";
    }
}