如何获取选定的项目ID和表单值:在Spring MVC中选择

时间:2014-03-15 08:48:13

标签: java spring spring-mvc

我是Spring的新手,我希望获得所选项目的idvalue。这是一个简单的例子

class MaritalStatus{
    private int id;
    private String status;
}

class regForm{
    private MaritalStatus maritalStatus;
    ...
}

//简单控制器来填充列表

@RequestMapping(value = "/save")
public String init(Model model){
    List<MaritalStatus> maritalList = new ArrayList<MaritalStatus>();
    maritalStatus.setId(1)
    maritalStatus.setStatus("Married")
    maritalList.add(maritalStatus);// add all status to the list....

    model.addAttribute("maritalList",maritalList);
    ...
}

jsp page

<form:form commandName="regForm" action="save">
    <form:select path="maritalStatus.id">
        <form:options items="${maritalList}" itemValue="id" itemLabel="status" />
    </form:select>
</form:form>

这是我想要获取所选项目ID和值(1和已婚)

的地方
@RequestMapping(value = "/save")
public String save(Model model,@ModelAttribute("regForm") RegForm regForm){
    // here I want to get selected item Id and Status(Label)
    //regFrom.getMaritalStatus().getId() and regFrom.getMaritalStatus().getStatus()
}

2 个答案:

答案 0 :(得分:2)

你至少可以通过两种方式实现它:

  1. 仅发送所选MaritalStatus的id(实际上是在jsp中执行),将其直接绑定到regForm.maritalStatusId,然后(当需要时)通过所选id从maritalList获取MaritalStatus(你必须保留maritalList或在某处创建它,无论如何都要这样做)

  2. 将您的选择直接绑定到regForm.maritalStatus <form:select path="maritalStatus">并编写一个可以从id转换为MaritalStatus对象的专用格式化程序,反之亦然。您可以在此处找到更多信息:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/html/validation.html#format

  3. [您还可以在隐藏字段中发送所选字段的ID以及其值,然后尝试从服务器端的MaritalStatus构建,但它不优雅。]

答案 1 :(得分:0)

您可以通过jsp中的一个隐藏变量和javascript函数获取状态。

    function changeStatus() {
    var statusSelected = document.getElementById("maritalStatus");
    var option = cookerModeIdSelected.options[statusSelected.selectedIndex];
    var selectedValue = option.getAttribute("data-status");
    document.getElementById("regForm").submit();        
}

<form:form commandName="regForm" action="save">
<form:hidden id="maritalStatusValue" path="maritalStatusValue"/>

<form:select path="maritalStatus.id" id="maritalStatus">
    <form:options items="${maritalList}" itemValue="id" itemLabel="status" data-status="${status}"/>
</form:select>
</form:form>