JSP页面如何将用户名传递给同页模态框并提交到Struts2后端
可行解决方案
方案1:通过表单隐藏域传递值(推荐,改动最小)
你现有代码的首要问题是删除按钮的语法错误:你把Bootstrap模态框的触发属性写在了onclick事件内部,会导致JS执行失败。按以下步骤改造即可:
- 在主页面表单内新增name为
username的隐藏输入框,同时修正删除按钮语法:
<%-- Page.jsp --%> <form> <!-- 新增隐藏字段存储要删除的用户名 --> <input type="hidden" name="username" id="delUsername" value=""> <!-- 其他原有表单内容 --> <!-- 修正后的删除按钮,${user.username}替换为你实际取用户名的变量 --> <button onclick="document.getElementById('delUsername').value='${user.username}'" data-toggle="modal" data-target="#myModal"> <fmt:message key='Delete user'/> </button> </form> <jsp:include page="deleteUserModal.jsp"/>
- 简化模态框提交逻辑,不需要重复给username赋值,点击删除按钮时已经完成赋值:
<%-- Modal.jsp --%> <button onclick="document.forms[0].action='deleteMethod';document.forms[0].submit();"> <fmt:message key='delete'/> </button>
方案2:通过模态框事件传递值
如果你不想占用全局表单的隐藏字段,可以用Bootstrap模态框的事件机制传值:
- 给删除按钮加自定义属性存储用户名:
<button data-username="${user.username}" data-toggle="modal" data-target="#myModal"> <fmt:message key='Delete user'/> </button>
- 主页面新增JS监听模态框显示事件,拿到要删除的用户名暂存:
$('#myModal').on('show.bs.modal', function (event) { var triggerBtn = $(event.relatedTarget) var username = triggerBtn.data('username') // 将用户名暂存到模态框的自定义属性中 $(this).data('currentDelUser', username) })
- 模态框提交时取出暂存的用户名赋值提交:
<%-- Modal.jsp --%> <button onclick="document.forms[0].username.value=$('#myModal').data('currentDelUser');document.forms[0].action='deleteMethod';document.forms[0].submit();"> <fmt:message key='delete'/> </button>
Struts2后端接收配置
只需要在对应的Action类中定义username属性,添加对应的getter、setter方法,Struts2会自动将提交的参数注入:
public class UserAction extends ActionSupport { private String username; // 必须添加get/set方法 public String getUsername() {return username;} public void setUsername(String username) {this.username = username;} public String deleteMethod() { // 直接使用username属性即可拿到要删除的用户名 return SUCCESS; } }
内容的提问来源于stack exchange,提问作者Amirak
相关产品推荐
相关产品推荐

