首先要做的事情 -
我的班级 -
public class StakeHolder{
private String stakeHolderName;
private Date startDate;
private Date endDate;
}
我的控制器请求映射 -
@RequestMapping(value = { "/add" }, method = RequestMethod.GET)
public String addGet(Model model) {
StakeHolder stakeholderObj = new StakeHolder();
//To be selected in drop-down for 'stakeHolderName' attribute of StakeHolder
List<String> organizationList = stakeholderObjService
.getApplicantOrganizations();
model.addAttribute("orgList", organizationList);
model.addAttribute(STAKEHOLDER_OBJ_STRING, stakeholderObj);
return STAKEHOLDER_ADD_VIEW;
}
我的下拉JSP代码 -
<form:select path="stakeHolderName" name="stakeHolderSelect"
id="stakeHolderSelect" style="width:220px;" items="${orgList}" >
当我从下拉列表中提交任何值的表单时,我有一个服务器端验证器来验证属性的所有值。当日期格式出错时,它将返回同一页面。当数据正确并再次提交时,下拉值将以逗号分隔格式绑定到我的类的'stakeHolderName'属性,这不是必需的。 它的东西就像
StakeHolder [stakeHolderName =,TestOrg1,TestOrg1,TestOrg1,startDate = null,endDate = null]
每次使用前面的逗号提交时,原始值都会不断附加到名称中。如何在没有任何逗号的情况下获取值“TestOrg1”一次?
感谢帮助。
答案 0 :(得分:0)
尝试在JSP中将下拉代码更改为此
<form:select path="stakeHolderName">
<form:options items="${orgList}" />
</form:select>
谢谢
答案 1 :(得分:0)
很抱歉这么晚才发布解决方案。 问题在别处发现。它实际上是在jsp上。 select选项有一个先前的单选按钮选择,并且在其click事件中,我必须显示一个预填充的输入文本框,其中包含相同路径变量的默认值。因此,当我提交表单时,它将值作为逗号分隔值绑定到输入文本。
我无法通过spring path变量找到解决方案。所以我使用了具有不同名称的普通html输入框,并通过init binder绑定了这些值。