strust2选中一个checkbox可以传多个值(不用js,直接传)方法

本文介绍如何在Struts2框架中实现当选择checkbox时,同时传递该选项对应的hidden值及输入框值的方法。通过命名约定和Struts2的Action接收参数的方式,可以轻松实现这一功能。

1.页面

选中一个checkbox的同时传递选中的那个项的hidden值或者输入值,一下是表中的一条信息


<TD ><input type="checkbox" value="${list.gid}" name="check" ></TD>
<TD >${list.gid}</TD>
<TD ><input type="text" name="${list.gid}"></TD>
<TD ><input type="hidden" name="${list.gid}1"></TD>


将name命名为checkbox的value值(比如id)

2.接收

以strust2 的action为例

private String check[];//带上get&set
public void getCheck(){
	HttpServletRequest request = ServletActionContext.getRequest();
	for(int i=0;i<check.length;i++){
	String text = request.getParameter(check[i]);//获取输入的值
        String hidden = request.getParameter(check[i]+"1");//获取hidden的值
	}
}


在处理多个复选框(checkbox)的开发需求时,通常涉及两个核心环节:**前端交互**和**后端数据处理**。以下是对这两种场景的详细说明。 ### 前端交互处理 在前端页面中,用户通过勾选或取消勾选多个 checkbox 来表达选择意图。为了获取这些状态并进行进一步操作,可以使用 JavaScript 进行遍历与筛选。例如: ```javascript function getSelectedCheckboxes() { const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked'); const selectedValues = Array.from(checkboxes).map(cb => cb.value); return selectedValues; } ``` 上述代码通过 `querySelectorAll` 获取所有被选中checkbox,并将其存储在一个数组中。这种技术常用于动态更新页面内容,如将选中显示在标题栏上: ```javascript document.getElementById("submitBtn").addEventListener("click", function () { const selected = getSelectedCheckboxes(); if (selected.length === 0) { alert("请至少选择一个选项!"); return false; } document.title = "已选中:" + selected.join(", "); }); ``` ### 后端数据处理(以 Struts 框架为例) 在 Web 应用中,前端的数据需要提交到服务器端进行处理。对于多个 checkbox 的提交,可以通过将它们的拼接成字符串,附加在 URL 参数中发送至服务端: ```javascript function submitSelection() { const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked'); const values = Array.from(checkboxes).map(cb => cb.value).join(","); if (values === "") { alert("请选择至少一个选项"); return false; } window.location.href = "view.do?cmdType=addmanagedip&id=" + encodeURIComponent(values); } ``` 在 Struts 后端 Action 中,可以通过 `request.getParameter("id")` 获取该字符串,并使用 `split()` 方法将其转换为数组进行处理: ```java String checkedStr = request.getParameter("id"); if (checkedStr != null && !checkedStr.isEmpty()) { String[] checkedArray = checkedStr.split(","); // 调用 DAO 层方法进行批量处理 ipService.updateManagedIPs(checkedArray); } ``` 这种方式不仅适用于 checkbox 提交,也可以扩展到其他多选参数的处理场景,提高了代码的通用性和灵活性[^2]。 ### 批量修改与初始化设置 在某些业务场景中,可能还需要对多个 checkbox 进行统一操作,比如“全选”或“反选”。以下是一个简单的全选功能实现: ```javascript function toggleAll(source) { const checkboxes = document.querySelectorAll('input[type="checkbox"]'); checkboxes.forEach(cb => cb.checked = source.checked); } ``` 此外,还可以设定默认状态或根据特定条件初始化 checkbox选中状态,例如从后端返回的数据决定哪些项应被默认选中[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值