dli*_*x90 1 java model-view-controller spring jsp spring-mvc
我正在尝试向我的网络应用添加编辑功能,但我在使用时遇到了一些问题@RequestParam.它获得的参数是null,它不应该是.我希望有人可以指出我犯了什么错误.
以下是控制器的方法:
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String getEdit(@RequestParam("customerId") Integer customerId, Model model) {
Customer existingCustomer = customerService.retrieveCustomer(customerId);
model.addAttribute("customerAttribute", existingCustomer);
return "edit-customer";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String postEdit(@RequestParam("customerId") Integer customerId,
@ModelAttribute("customerAttribute") @Valid Customer customer, BindingResult result) {
if (result.hasErrors()) {
return "edit-customer";
}
customer.setCustomerId(customerId);
customerService.editCustomer(customer);
return "redirect:/test/customer/list";
Run Code Online (Sandbox Code Playgroud)
和两个jsp页面
edit-customer.jsp:
<body>
<h1>Edit Existing Customer</h1>
<c:url var="saveUrl" value="/test/customer/edit?customerId=${customerAttribute.customerId}" />
<form:form modelAttribute="customerAttribute" method="POST" action="${saveUrl}">
<table>
<tr>
<td><form:label path="customerId">Customer Id:</form:label></td>
<td><form:input path="customerId" disabled="true"/></td>
</tr>
<tr>
<td><form:label path="customerCountry">Customer Country</form:label></td>
<td><form:input path="customerCountry"/></td>
</tr>
<tr>
<td><form:label path="customerName">Customer Name:</form:label></td>
<td><form:input path="customerName"/></td>
</tr>
</table>
<input type="submit" value="Save" />
</form:form>
</body>
Run Code Online (Sandbox Code Playgroud)
view-all-customers.jsp:
<body>
<a href="<c:url value="/test/home"/>">Home</a>
<h1>Customers</h1>
<c:url var="addUrl" value="/test/customer/add" />
<c:url var="editUrl" value="/test/customer/edit?customerId=${customer.customerId}"/>
<c:if test="${!empty customers}">
<a href="${addUrl}">Add</a>
</c:if>
<table style="border: 1px solid; width: 500px; text-align:center">
<thead style="background:#ccc">
<tr>
<th>Customer Id</th>
<th>Customer Country</th>
<th>Customer Name</th>
<th colspan="4"></th>
</tr>
</thead>
<tbody>
<c:forEach items="${customers}" var="customer">
<tr>
<td><c:out value="${customer.customerId}" /></td>
<td><c:out value="${customer.customerCountry}" /></td>
<td><c:out value="${customer.customerName}" /></td>
<td><a href="${editUrl}">Edit</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<c:if test="${empty customers}">
There are currently no customers in the list. <a href="${addUrl}">Add</a> a customers.
</c:if>
</body>
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到为什么Integer customerId在GET方法中是null?
谢谢你,D
你${customer.customerId}在它被初始化之前使用:
<!-- you use it here -->
<c:url var="editUrl" value="/test/customer/edit?customerId=${customer.customerId}"/>
<c:if test="${!empty customers}">
....
<tbody>
<!-- and initialize it here -->
<c:forEach items="${customers}" var="customer">
<tr>
<td><c:out value="${customer.customerId}" /></td>
<td><c:out value="${customer.customerCountry}" /></td>
<td><c:out value="${customer.customerName}" /></td>
<td><a href="${editUrl}">Edit</a></td>
</tr>
</c:forEach>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
只需editUrl在循环内部设置:
<c:if test="${!empty customers}">
....
<tbody>
<c:forEach items="${customers}" var="customer">
<c:url var="editUrl" value="/test/customer/edit?customerId=${customer.customerId}"/>
<tr>
<td><c:out value="${customer.customerId}" /></td>
<td><c:out value="${customer.customerCountry}" /></td>
<td><c:out value="${customer.customerName}" /></td>
<td><a href="${editUrl}">Edit</a></td>
</tr>
</c:forEach>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
它应该工作.editUrl无论如何,您必须为每个客户重置.
| 归档时间: |
|
| 查看次数: |
7792 次 |
| 最近记录: |