[春季3.0.5] MVC
我上课了:
public class Address {
private String street;
private String city;
public String getStreet() {
return this.street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return this.city;
}
public void setCity(String city) {
this.city = city;
}
}
我的功能是依赖于在站点上添加无限数量地址的可能性(带有spring和form标签的JSP)。有人可以在控制器中提供这种功能的骨架吗?
答案 0 :(得分:2)
你的问题有点不清楚。答案是双重的:
@Controller
public class SomeController {
@RequestMapping("/somepage.jsp ")
public String somePage(HttpServletRequest request, ModelMap model) {
List<Address> addresses = ....
// We can now access the key "addresses" in our jsp
model.put("addresses", addresses);
return "/WEB-INF/jsp/somepage.jsp";
}
}
在您的jsp页面中,您可以使用例如core
jstl lib显示地址列表,此处使用前缀c
进行说明。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
...
<c:forEach items="${addresses}" var="addr">
City: ${addr.city} <br/>
Street: ${addr.street}
</c:forEach>
....
</html>
如果您要提交一个未定义数量的地址,那会更棘手。你可以做的是创建一个javasript表单模板,按下按钮或creates两个额外的表单字段。确保每个表单字段都有一个唯一的名称,例如:
<input type="text" name="street_1" />
<input type="text" name="city_1" />
<input type="text" name="street_2" />
<input type="text" name="city_2" />
....
然后,您可以使用request.getParameterMap()
对字段进行迭代,根据匹配的名称构建地址选项(例如,street_1应与city_1相关联,依此类推)。
[编辑] 为了让您了解javascript的外观,我从头到尾给您这个(注意我还没有测试过这段代码,它是给那里的你知道可能的样子。
var i = 0; // initialize to how many addresses you initially display
function addAddress() {
var form = document.getElementById('form');
var html = '<input type="text" name="street_' + i + '" />' +
'<input type="text" name="city_' + i + '" />';
form.innerHTML += html;
i++;
}
然后在按下按钮时调用javascript:
<input type="button" onClick="addAddress();" value="add address" />
如果您决定使用例如jQuery,这将更加容易。例如,
var i = 0:
$("#addbtn").click(function() {
$("#someId").append(
'<input type="text" name="street_' + i + '" />' +
'<input type="text" name="city_' + i + '" />');
i++;
});