我在春季绑定了一个多选列表,该项目没有从 DAO 获取其数据,数据是从另一个选择选项列表中添加的。用户单击一个按钮,然后使用 jquery 将数据发送到多选选项列表。
当表单发布时,该项目不会发生数据绑定,因为它是一种复杂的数据类型,所以我注册了一个 CustomEditor 并将其附加到 @initbinder。
已编辑 我已经更新了CollectionEditor现在将公民列表返回到视图的代码,但是我无法获取列表中的数据来填充选择选项。我正在尝试将元素添加到列表中,但是当从服务器返回时,jsp 仍然选择保持为空。
下面是代码:
自定义集合编辑器
@InitBinder("crime")
protected void initBinder(WebDataBinder binder, HttpServletRequest request, ServletRequestDataBinder victimbinder){
victimbinder.registerCustomEditor(List.class, "victims", new CustomCollectionEditor(List.class){
protected Object convertElement(Object element){
Citizens victims = new Citizens();
String ssNumber = "";
if (element instanceof String){
ssNumber = (String) element;
}
logger.debug("element is ;" +element);
try {
int socialSecurityNumber = Integer.parseInt(ssNumber);
victims = citizenManager.getCitizen(socialSecurityNumber);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
}
return victims;
}
});
从控制器中的DAO填充的jsp
这包含数据填充表单 DAO 类,当单击按钮时,它会从列表中获取数据,并将其附加到绑定到 POJO 的另一个列表
<label>Victims List</label><buttonid="addVictimBtn">/button>
<form:select path="" id="dbvictims" title="Victims Of Crime" class="victimLst">
<form:options items="${dbvictims.dbvictimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select>
绑定到 POJO 的 Jsp 选择项
<label>Victims In Crime</label><button id="removeVictimBtn">-</button>
<form:select path="victims" id="victims" title="Victims Of Crime" multiple="multiple" class="victimLst">
<form:options items="${victimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select><form:errors path="victims" class="errors" />