- 浏览: 28412 次
- 性别:
- 来自: 杭州
文章分类
最新评论
Struts2 框架对checkbox的处理
1、 对于html的input[type=checkbox]的标签元素,如果元素未被选中,则不作为参数提交。如果后台绑定参数是布尔类型,那么元素的选中值应该是布尔值的字符串。
2、 对于struts2的checkbox标签,会生成一个html的input[type=checkbox]的标签元素和一个html的input[type=hidden]的标签元素。如下所示:
<input type="checkbox" name="useOil" value="true" id=" useOil "/>
<input type="hidden" name="__checkbox_ useOil " value="true"/>
新增的hidden用来checkbox选中情况:
a) 当checkbox和hidden都提交到参数对象中,则表示checkbox选中
b) 当hiddeng提交到参数对象中,checkbox不存在,则表示checkbox没选中。
3、 附上struts2对checkbox的拦截器:
private static final long serialVersionUID = 0xf7dafd791c82b76fL;
private String uncheckedValue;
private static final Logger LOG = LoggerFactory.getLogger(org/apache/struts2/interceptor/CheckboxInterceptor);
public CheckboxInterceptor()
{
uncheckedValue = Boolean.FALSE.toString();
}
public String intercept(ActionInvocation ai)
throws Exception
{
Map parameters = ai.getInvocationContext().getParameters(); //上传参数集
Map newParams = new HashMap();
Set entries = parameters.entrySet();
Iterator iterator = entries.iterator();
do
{
if(!iterator.hasNext())
{
break;
}
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
String key = (String)entry.getKey();
if(key.startsWith("__checkbox_")) //判断是否存在checkbox生成的hidden标签的参数,key 为 hidden的name[name="__checkbox_XXXX"]
{
String name = key.substring("__checkbox_".length());
Object values = entry.getValue();
iterator.remove();
if(values != null && (values instanceof String[]) && ((String[])(String[])values).length > 1) //复选不需判断
{
if(LOG.isDebugEnabled())
{
LOG.debug("Bypassing automatic checkbox detection due to multiple checkboxes of the same na" +
"me: #0"
, new String[] {
name
});
}
} else
if(!parameters.containsKey(name)) //判断checkbox标签是否作为参数上传
{
newParams.put(name, new String[] {
uncheckedValue //布尔类型字符串
});
}
}
} while(true);
parameters.putAll(newParams);
return ai.invoke();
}
1、 对于html的input[type=checkbox]的标签元素,如果元素未被选中,则不作为参数提交。如果后台绑定参数是布尔类型,那么元素的选中值应该是布尔值的字符串。
2、 对于struts2的checkbox标签,会生成一个html的input[type=checkbox]的标签元素和一个html的input[type=hidden]的标签元素。如下所示:
<input type="checkbox" name="useOil" value="true" id=" useOil "/>
<input type="hidden" name="__checkbox_ useOil " value="true"/>
新增的hidden用来checkbox选中情况:
a) 当checkbox和hidden都提交到参数对象中,则表示checkbox选中
b) 当hiddeng提交到参数对象中,checkbox不存在,则表示checkbox没选中。
3、 附上struts2对checkbox的拦截器:
private static final long serialVersionUID = 0xf7dafd791c82b76fL;
private String uncheckedValue;
private static final Logger LOG = LoggerFactory.getLogger(org/apache/struts2/interceptor/CheckboxInterceptor);
public CheckboxInterceptor()
{
uncheckedValue = Boolean.FALSE.toString();
}
public String intercept(ActionInvocation ai)
throws Exception
{
Map parameters = ai.getInvocationContext().getParameters(); //上传参数集
Map newParams = new HashMap();
Set entries = parameters.entrySet();
Iterator iterator = entries.iterator();
do
{
if(!iterator.hasNext())
{
break;
}
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
String key = (String)entry.getKey();
if(key.startsWith("__checkbox_")) //判断是否存在checkbox生成的hidden标签的参数,key 为 hidden的name[name="__checkbox_XXXX"]
{
String name = key.substring("__checkbox_".length());
Object values = entry.getValue();
iterator.remove();
if(values != null && (values instanceof String[]) && ((String[])(String[])values).length > 1) //复选不需判断
{
if(LOG.isDebugEnabled())
{
LOG.debug("Bypassing automatic checkbox detection due to multiple checkboxes of the same na" +
"me: #0"
, new String[] {
name
});
}
} else
if(!parameters.containsKey(name)) //判断checkbox标签是否作为参数上传
{
newParams.put(name, new String[] {
uncheckedValue //布尔类型字符串
});
}
}
} while(true);
parameters.putAll(newParams);
return ai.invoke();
}
发表评论
-
aaaaaaaaaaaa
2014-08-30 09:01 0111111111111111 -
doc命令之关机管理
2014-03-21 09:26 652@echo off set /p p=是否关机(1:关机 2: ... -
金字塔最短路径
2014-03-18 10:02 544class Triangle { private int[] ... -
汉诺塔递归算法
2014-03-15 10:49 527class Hanio { private int st ... -
回溯算法之八皇后
2014-03-13 13:27 561public class EightQueens { ... -
xml的基本学习
2014-03-04 15:17 7981、 XML的概念 允许开发 ... -
软件生命三大测试的概念和区别
2014-02-17 22:01 0根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和 ... -
Session处理同账号管理
2013-10-22 17:19 721首先使用HttpSessionAttributeListene ... -
线程概念
2013-03-20 21:06 0线程对可共享的、可改变的状态变量进行访问,需要实现协同,否则数 ... -
KMP算法
2013-03-20 14:10 848package zl.character.compare; ... -
parseInt惹的祸
2013-03-04 17:57 755今天项目在实施的过程中,出现了让我懊恼的事情: 卡的金额读不出 ... -
Unable to retrieve metadata for procedure
2013-03-01 13:51 3838第一次用jdbc调用mysql存储过程的过程中犯了一个严重的错 ... -
JDK动态代理和CGLIB动态代理的学习
2012-10-08 17:25 0JDK动态代理是基于java.lang.reflect.Pro ... -
log4j输出spring框架的信息
2012-10-08 17:00 0log4j.logger.org.springframewor ... -
ReadWriteLock多线程下操作
2012-09-06 17:45 931ReadWriteLock是实现多线程环境下同步的一种方式。与 ... -
WIN7 BCompare 启动应用程序发生错误
2012-08-24 11:26 1027WIN7下寻找: 把C:\用户\[用户名]\AppData\S ... -
ant
2012-08-24 11:15 0当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设 ... -
spring框架后处理器的学习
2012-07-27 09:22 651spring框架对容器管理bean和容器本身提供了额外增强功能 ... -
socket简单通讯
2012-07-26 17:09 732package zl.socket.server; impo ... -
java命令执行class文件
2012-07-26 14:30 650eclipse编译出来的class文件如果带有包结构,请在命令 ...
相关推荐
struts的htmlcheckbox标签的默认选中问题
(原创)struts标签之checkboxlist选中值并换行处理
NULL 博文链接:https://xueyue.iteye.com/blog/1158510
freemarker初探 附 freemarker中文手册 与 struts2 checkboxlist的研究 入门适用!
巧用struts标签之checkboxlist选中默认值换行处理
NULL 博文链接:https://simle-google.iteye.com/blog/586373
NULL 博文链接:https://zxymicky.iteye.com/blog/1536476
在Struts中几种情况可以使标签初始就是选中的,Formbean里面该Property的值设为 1.on 、2.yes 、3.true 这三种情况都是可以实现默认选中的。 注:如果不选中,最好把Property的设置为””,因为在Action中得到...
要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。 <%@taglib prefix="s" uri="/struts-tags" %>
关键代码都在里面 资源是工程中的一部分 暂不能运行 原来用的是Java实现Json串 考虑到频繁访问数据库 就改成了存储过程
NULL 博文链接:https://shupili141005.iteye.com/blog/667446
前台checkbox提交的数据,Struts2在后台自动封装成数组/List。 but 前台向后台批量提交对象数据,struts2就显得力不从心了,本案例着重介绍,批量向后台提交对象数据,源码,有图有真相哦! 欢迎交流、吐槽、指导...
html:radio,html:checkbox,html:multibox,html:select 与actionform结合使用数组或集合,有多种实现方式
工程文件 博文链接:https://selvemen.iteye.com/blog/453223
<%@ taglib uri="/struts-tags" prefix="s" %> 结合例子,重点掌握以下标签的用法 (1) (2) (3) <s:if> 、、 (4) (5) (6) 、 (7) 、、<s:checkbox>、 (8) 、、<s:checkboxlist>
GridView与CheckBox结合
2.配置struts.xml文件; 3.掌握在视图中访问Action的方法. 4. 掌握在视图中多方法调用同一个Action的方法 5.掌握常用标签textfield、radio、paaaword、checkboxlist、select、data的使用方法,实现页面与Action的交互...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
用struts2实现用户的注册,涉及到的知识点包括用户名和密码的校验(正则表达式验证);国际化;radio,checkboxlist,optiontransferselect等标签的使用,文件的上传等。