spring表单jsp绑定引用bean
spring form jsp binding reference bean
我试图使用 spring form
标签库绑定 POJO。绑定引用 class bean 变量后,我得到 "Bad Request Error- Http Status 400"。
如果我删除引用 class 的绑定,我的表单提交成功并且值也填充在 class.
中
public class EmployeeTourPojo {
private String empDisplayName;
private List<TourDetailsPojo> tourDetails;
//getter and setter
}
和
public class TourDetailsPojo {
private Date departDate;
private String departTime;
//getters and setters
}
JSP:
<td><form:input path="empDisplayName" class="form-control"/> </td>
<form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/><br/>
我从几个 articles 那里得到了引用,但是当我在提交 JSP.
之前添加行时,他们正在获取请求中加载引用 bean 的列表
使用JSTL 标签库从列表中迭代数据。
<c:forEach var="tourDetails" items="${tourDetails}" varStatus="status">
<form:input placeholder="Departure Date" path="tourDetails[${status.index}].departDate" required="required" class="datepicker form-control"/><br/>
</c:forEach>
同时在 JSP.
开头添加以下标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
如果我正确理解了你的问题,这会对你有所帮助
- 在浏览器中检查您的 table 行
<tr>
标签
复制html元素,使其成为模板,在inspected element 右键单击和复制 -> 外部HTML.
假设生成的 HTML 元素如下所示
这个将转换
...<form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/><br/>
...
类似于这个
...<input placeholder="Departure Date" id="tourDetails0.departDate" name="tourDetails[0].departDate" required="required" class="datepicker form-control"/><br/>
...
创建 生成的 html 模板
var 模板 = '...<input placeholder="Departure Date"
id="tourDetails{INDEX}.departDate" name="tourDetails[{INDEX}].departDate"
required="required" class="datepicker form-control"/><br/>
...';
看到我已经将 0
替换为 {INDEX}
点击Add Row
按钮,获取<tr>
的length
,用{INDEX}
替换长度,使用javascript函数
generated_template = template.replace(/{INDEX}/g,length);
将 generated_template
附加到 table。
希望这会有所帮助...
我发现问题出在点击 "Add Row" 后索引递增。因此,我添加了以下 JQuery 代码来增加索引。
$("#addRow").click(function(){
//alert("The button was clicked.");
var addressRow = $('.repeat-address').last();
var addressRowLength = $('.repeat-address').length;
var newAddressRow = addressRow.clone(true).find("input").val("").end();
$(newAddressRow).find("td input,td select").each(function(index,item) {
item.name = item.name.replace(/[0-9]/g,addressRowLength);
});
newAddressRow.insertAfter(addressRow);
});
HTML 代码
<c:set var="index" value="0"/>
<td><form:input path="empDisplayName" class="form-control"/> </td>
<tr class="repeat-address">
<td>Departure Date</td>
<td><form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/></td>
<td>Pincode</td>
<td><input type="text" name="tourDetails[${index}].departDate"/></td>
<td><input type="file" name="tourDetails[${index}].tourTicket"/></td>
</tr>
<tr><td colspan="3"><input id="addRow" type="button" value="Add Row"></td></tr>
因为,我还需要用POJO绑定输入类型文件。我还添加了一个多部分字段(在 TourDetailsPojo Bean 中)作为
private Date departDate;
private Multipart tourTicket;
//getters and setters
我试图使用 spring form
标签库绑定 POJO。绑定引用 class bean 变量后,我得到 "Bad Request Error- Http Status 400"。
如果我删除引用 class 的绑定,我的表单提交成功并且值也填充在 class.
中public class EmployeeTourPojo {
private String empDisplayName;
private List<TourDetailsPojo> tourDetails;
//getter and setter
}
和
public class TourDetailsPojo {
private Date departDate;
private String departTime;
//getters and setters
}
JSP:
<td><form:input path="empDisplayName" class="form-control"/> </td>
<form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/><br/>
我从几个 articles 那里得到了引用,但是当我在提交 JSP.
之前添加行时,他们正在获取请求中加载引用 bean 的列表使用JSTL 标签库从列表中迭代数据。
<c:forEach var="tourDetails" items="${tourDetails}" varStatus="status">
<form:input placeholder="Departure Date" path="tourDetails[${status.index}].departDate" required="required" class="datepicker form-control"/><br/>
</c:forEach>
同时在 JSP.
开头添加以下标签库<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
如果我正确理解了你的问题,这会对你有所帮助
- 在浏览器中检查您的 table 行
<tr>
标签 复制html元素,使其成为模板,在inspected element 右键单击和复制 -> 外部HTML.
假设生成的 HTML 元素如下所示这个将转换
...
<form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/><br/>
...类似于这个
...
<input placeholder="Departure Date" id="tourDetails0.departDate" name="tourDetails[0].departDate" required="required" class="datepicker form-control"/><br/>
...创建 生成的 html 模板
var 模板 = '...
<input placeholder="Departure Date" id="tourDetails{INDEX}.departDate" name="tourDetails[{INDEX}].departDate" required="required" class="datepicker form-control"/><br/>
...';看到我已经将
0
替换为{INDEX}
点击
Add Row
按钮,获取<tr>
的length
,用{INDEX}
替换长度,使用javascript函数
generated_template = template.replace(/{INDEX}/g,length);
将
generated_template
附加到 table。
希望这会有所帮助...
我发现问题出在点击 "Add Row" 后索引递增。因此,我添加了以下 JQuery 代码来增加索引。
$("#addRow").click(function(){
//alert("The button was clicked.");
var addressRow = $('.repeat-address').last();
var addressRowLength = $('.repeat-address').length;
var newAddressRow = addressRow.clone(true).find("input").val("").end();
$(newAddressRow).find("td input,td select").each(function(index,item) {
item.name = item.name.replace(/[0-9]/g,addressRowLength);
});
newAddressRow.insertAfter(addressRow);
});
HTML 代码
<c:set var="index" value="0"/>
<td><form:input path="empDisplayName" class="form-control"/> </td>
<tr class="repeat-address">
<td>Departure Date</td>
<td><form:input placeholder="Departure Date" path="tourDetails[${index}].departDate" required="required" class="datepicker form-control"/></td>
<td>Pincode</td>
<td><input type="text" name="tourDetails[${index}].departDate"/></td>
<td><input type="file" name="tourDetails[${index}].tourTicket"/></td>
</tr>
<tr><td colspan="3"><input id="addRow" type="button" value="Add Row"></td></tr>
因为,我还需要用POJO绑定输入类型文件。我还添加了一个多部分字段(在 TourDetailsPojo Bean 中)作为
private Date departDate;
private Multipart tourTicket;
//getters and setters