【发布时间】:2013-03-22 16:48:20
【问题描述】:
我在春季绑定了一个多选列表,该项目没有从 DAO 获取其数据,数据是从另一个选择选项列表添加的。用户点击一个按钮,数据使用 jquery 发送到多选选项列表。
当表单发布时,项目不会发生数据绑定,因为它是一种复杂的数据类型,所以我注册了一个 CustomEditor 并将其附加到 @initbinder。
已编辑 我已经更新了 CollectionEditor 的代码,现在将公民列表返回到视图,但是我无法获取列表中的数据来填充选择选项。我正在尝试将元素添加到列表中,但是当从服务器返回时,jsp 仍然选择保持 null。
下面是代码:
CustomCollectionEditor
@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>
Jsp 选择绑定到 POJO 的项目
<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" />
【问题讨论】:
-
我不相信选择选项标签是在 HTTP 帖子中发送的,只有值。我不相信你可以直接得到所说的值。但是,您也许可以使用隐藏字段执行某些操作。
-
您遇到错误了吗?如果不是,生成的 HTML 是什么样的?
-
那么,让我看看我是否能理解发生了什么。您有一个 Spring MVC 控制器,其中定义了一个 (at)InitBinder,它创建了一个 CustomCollectionEditor 的实例。此 CustomCollectionEditor 用于填充“victimList”。不过,victimList 是如何在您的模型中设置的?
-
你也可以粘贴控制器代码吗?
-
看起来您只是想发送一个 SSN 并从数据库中获取该 SSN 的受害者列表,然后将该列表作为模型的一部分发送回页面,对吗?您要调用哪个控制器方法来执行此操作?
标签: java jquery spring spring-mvc