我是Spring的新手,我希望获得所选项目的id
和value
。这是一个简单的例子
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()
}
答案 0 :(得分:2)
你至少可以通过两种方式实现它:
仅发送所选MaritalStatus的id(实际上是在jsp中执行),将其直接绑定到regForm.maritalStatusId,然后(当需要时)通过所选id从maritalList获取MaritalStatus(你必须保留maritalList或在某处创建它,无论如何都要这样做)
将您的选择直接绑定到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
[您还可以在隐藏字段中发送所选字段的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>