【发布时间】:2014-03-06 06:56:14
【问题描述】:
我有一个弹簧控制器,其中有 CURD 方法。
@Controller
public class EditEmployeeController {
@Autowired
private EmployeeManager employeeManager;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String listEmployees(ModelMap map)
{
map.addAttribute("employee", new TestEmployee());
map.addAttribute("employeeList", employeeManager.getAllEmployees());
System.out.println("calling listEmployees");
return "editEmployeeList";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addEmployee(@ModelAttribute(value="employee") TestEmployee employee, BindingResult result)
{
employeeManager.addEmployee(employee);
return "redirect:/";
}
@RequestMapping("/delete/{employeeId}")
public String deleteEmplyee(@PathVariable("employeeId") Integer employeeId)
{
employeeManager.deleteEmployee(employeeId);
return "redirect:/";
}
@RequestMapping("/update/{employeeId}")
public String updateEmployee(@PathVariable("employeeId") Integer employeeId, ModelMap map)
{
TestEmployee emp = employeeManager.updateEmployee(employeeId);
map.addAttribute("employee", emp);
return "redirect:/";
}
jsp页面是这样的
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Spring Hibernate Integration</title>
</head>
<body>
<h2>Employee Management Screen</h2>
<form:form method="post" action="add" commandName="employee">
<table>
<tr>
<td><form:label path="firstname"><spring:message code="label.firstname"/></form:label></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message code="label.lastname"/></form:label></td>
<td><form:input path="lastname" /></td>
</tr>
<tr>
<td><form:label path="email"><spring:message code="label.email"/></form:label></td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td><form:label path="telephone"><spring:message code="label.telephone"/></form:label></td>
<td><form:input path="telephone" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="<spring:message code="label.add"/>"/>
</td>
</tr>
</table>
</form:form>
<h3>Employees</h3>
<c:if test="${!empty employeeList}">
<table class="data">
<tr>
<th>FirstName</th>
<th>LastName</th>
<th>Email</th>
<th>Telephone</th>
<th>Action</th>
</tr>
<c:forEach items="${employeeList}" var="emp">
<tr>
<td>${emp.firstname}</td>
<td>${emp.lastname}</td>
<td>${emp.email}</td>
<td>${emp.telephone}</td>
<td><a href="delete/${emp.id}">Delete</a>|
<a href="update/${emp.id}">Update</a>
</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
这是我的 web.xml 文件
<servlet>
<servlet-name>employee</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>employee</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
除了 Update 方法外,所有功能都工作正常,因为当我尝试从 DB 获取对象时,它正在被获取,但在渲染它之前,正在调用 listEmployees 方法,该方法再次分配空白对象进行渲染。
我的问题是为什么当我返回重定向时再次调用这个 listEmployee 方法:/ 从带有 Map 中对象的更新方法。 请帮忙。
【问题讨论】:
-
因为你的重定向路径和listEmployee方法的请求映射是一样的
-
是的,上面的评论是正确的。将其更改为 / 以外的其他内容
标签: spring spring-mvc