使用 spring 表单标记为空字段传递 null
Passing null for empty fields using spring form tag
我正在使用 Spring 表单标签将分组字段列表发送到 Spring 控制器。其中一些可以为空。例如
JSP 页面有
<form:input path="id" size="30" value=""/>
<form:input path="name" size="30" value=""/>
<c:forEach var="i" begin="0" end="4">
<form:input path="myLog[${i}].dateOfCall" size="10" value=""/
<form:input path="myLog[${i}].activity" size="30" value=""/>
</c:forEach>
我的模型字段看起来像
Class MyModel {
String name;
String id;
List<MyLog> myLog;
public static class MyLog {
String dateOfCall;
String activity;
}
现在,当我没有填充任何 myLog 时,我得到的所有 5 个 myLog 对象都是空值。
所以我的问题是有一种方法可以根据日志用户输入的数量来调整 myLog 的大小。例如,如果用户没有输入日志信息,它的大小应该是 0。
根据您发布的 JSP 代码,我假设它最终在浏览器中呈现如下:
<input id="myLog[0].dateOfCall" name="myLog[0].dateOfCall" size="10" value="" />
<input id="myLog[0].activity" name="myLog[0].activity" size="30" value="" />
... 1, 2, 3 ...
<input id="myLog[4].dateOfCall" name="myLog[4].dateOfCall" size="10" value="" />
<input id="myLog[4].activity" name="myLog[4].activity" size="30" value="" />
对于 Spring 表单,这意味着即使所有输入字段都留空,它也应该创建五个(空)myLog
对象。
如果您想解决此问题,我建议您仅按需创建输入块(如果用户确实希望创建它们)。
你可以实现这一点,即 JavaScript;只需添加一个 "Add log" 按钮并在其点击事件上创建一个块
<input id="myLog[xxx].dateOfCall" name="myLog[xxx].dateOfCall" size="10" value=""/>
<input id="myLog[xxx].activity" name="myLog[xxx].activity" size="30" value=""/>
在表格内的正确位置。
另一种可能性是验证收到的 myLog
个对象,如果为空,则拒绝或静默丢弃它。
我正在使用 Spring 表单标签将分组字段列表发送到 Spring 控制器。其中一些可以为空。例如
JSP 页面有
<form:input path="id" size="30" value=""/>
<form:input path="name" size="30" value=""/>
<c:forEach var="i" begin="0" end="4">
<form:input path="myLog[${i}].dateOfCall" size="10" value=""/
<form:input path="myLog[${i}].activity" size="30" value=""/>
</c:forEach>
我的模型字段看起来像
Class MyModel {
String name;
String id;
List<MyLog> myLog;
public static class MyLog {
String dateOfCall;
String activity;
}
现在,当我没有填充任何 myLog 时,我得到的所有 5 个 myLog 对象都是空值。
所以我的问题是有一种方法可以根据日志用户输入的数量来调整 myLog 的大小。例如,如果用户没有输入日志信息,它的大小应该是 0。
根据您发布的 JSP 代码,我假设它最终在浏览器中呈现如下:
<input id="myLog[0].dateOfCall" name="myLog[0].dateOfCall" size="10" value="" />
<input id="myLog[0].activity" name="myLog[0].activity" size="30" value="" />
... 1, 2, 3 ...
<input id="myLog[4].dateOfCall" name="myLog[4].dateOfCall" size="10" value="" />
<input id="myLog[4].activity" name="myLog[4].activity" size="30" value="" />
对于 Spring 表单,这意味着即使所有输入字段都留空,它也应该创建五个(空)myLog
对象。
如果您想解决此问题,我建议您仅按需创建输入块(如果用户确实希望创建它们)。 你可以实现这一点,即 JavaScript;只需添加一个 "Add log" 按钮并在其点击事件上创建一个块
<input id="myLog[xxx].dateOfCall" name="myLog[xxx].dateOfCall" size="10" value=""/>
<input id="myLog[xxx].activity" name="myLog[xxx].activity" size="30" value=""/>
在表格内的正确位置。
另一种可能性是验证收到的 myLog
个对象,如果为空,则拒绝或静默丢弃它。