Spring - 发送要查看的对象列表并返回 Post 控制器中只有一个对象

Spring - Send List of Objects to View and back to Post only one Object in controller

我想像图片中那样向用户展示并编辑或删除它们。问题是,我如何才能 post 只有一个对象或在列表中识别一个对象来编辑或删除?

我想edit和delete应该提交2个参数:一个用来识别什么样的操作(edit,delete),另一个告诉modidy列表中的什么对象(也许是索引?)。

我在控制器中有以下方法:

用户表单是一个包装器 class,是遵循 this 教程

的用户列表
/** Default GET form handler for MaganeUsers, in submission will call listusers */
@RequestMapping(value="admin/manageusers",  method=RequestMethod.GET)
public String listusers(Model model) {
    List<User> users = userService.listUsersDetails();
    UserForm userform = new UserForm();
    userform.setUserForm(users);

    model.addAttribute("userForm", userform);       
    return "admin/manageusers";
}

这是我的 jsp 打印 table:

<c:if test="${not empty userForm}">
<sf:form method="post" action="manageusers" modelAttribute="userForm">
<table>
<tr>
    <th>No.</th>
    <th>Username</th>
    <th>User Roles</th>
    <th>Enabled</th>
</tr>
<c:forEach items="${userForm.userForm}" var="users" varStatus="i">
    <tr>
        <td align="center">${i.count}</td>
        <td><sf:input path="userForm[${i.index}].username" value="${users.username}"/></td>
        <td><sf:input path="userForm[${i.index}].userRole" value="${users.userRole}"/></td>
        <td><sf:input path="userForm[${i.index}].enabled" value="${users.enabled}"/></td>
        <td><button name="submit" value="i">Edit</button><button name="submit" value="i">Delete</button></td>
    </tr>
</c:forEach>
</table> 
</sf:form>
</c:if>

以及我管理提交的方法post:

/** Default GET form handler for MaganeUsers, in submission will call listusers */
@RequestMapping(value="admin/manageusers",  method=RequestMethod.POST)
public String deleteuser(Model model, @ModelAttribute("userForm") UserForm userForm) {
    ....
    // code here?
    userService.deleteUser(username);
    return "admin/manageusers";
}

我想我应该在 JSP 中添加一些东西来发送参数并在 post holder 中管理它们,但不知道如何。

谢谢。

  1. 您应该在单独的控制器方法中处理编辑和删除。

  2. 将您的提交按钮更改为输入类型="button"并处理单击 js 事件,您可以在其中构建逻辑来决定必须调用哪个控制器方法(可能可以构建url 动态)并从 js 提交。

  3. 在 edit/delete 操作后,您可能需要调用 get 函数,后者会依次查询数据库,用户可以在 jsp.[=10 上看到最新结果=]