- 浏览: 30249 次
- 性别:
- 来自: 杭州
文章分类
最新评论
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 686@echo off set /p p=是否关机(1:关机 2: ... -
金字塔最短路径
2014-03-18 10:02 575class Triangle { private int[] ... -
汉诺塔递归算法
2014-03-15 10:49 580class Hanio { private int st ... -
回溯算法之八皇后
2014-03-13 13:27 607public class EightQueens { ... -
xml的基本学习
2014-03-04 15:17 8771、 XML的概念 允许开发 ... -
软件生命三大测试的概念和区别
2014-02-17 22:01 0根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和 ... -
Session处理同账号管理
2013-10-22 17:19 772首先使用HttpSessionAttributeListene ... -
线程概念
2013-03-20 21:06 0线程对可共享的、可改变的状态变量进行访问,需要实现协同,否则数 ... -
KMP算法
2013-03-20 14:10 919package zl.character.compare; ... -
parseInt惹的祸
2013-03-04 17:57 812今天项目在实施的过程中,出现了让我懊恼的事情: 卡的金额读不出 ... -
Unable to retrieve metadata for procedure
2013-03-01 13:51 3911第一次用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 999ReadWriteLock是实现多线程环境下同步的一种方式。与 ... -
WIN7 BCompare 启动应用程序发生错误
2012-08-24 11:26 1121WIN7下寻找: 把C:\用户\[用户名]\AppData\S ... -
ant
2012-08-24 11:15 0当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设 ... -
spring框架后处理器的学习
2012-07-27 09:22 730spring框架对容器管理bean和容器本身提供了额外增强功能 ... -
socket简单通讯
2012-07-26 17:09 801package zl.socket.server; impo ... -
java命令执行class文件
2012-07-26 14:30 705eclipse编译出来的class文件如果带有包结构,请在命令 ...
相关推荐
- Configuration(配置):Struts2的配置文件(struts.xml)定义了Action、Interceptor、Result的映射关系,以及全局的配置信息。 四、Struts2的MVC架构 在Struts2中,模型由Action类表示,视图主要由JSP页面和...
Struts2支持轻量级的依赖注入(IoC),使得开发者可以在配置文件中声明对象的创建和依赖关系,而不需要在代码中显式地创建对象或设置属性。这大大简化了应用程序的开发过程,提高了代码的可读性和可维护性。在上面的...
Struts2提供了`s:checkbox`标签,可以绑定到Action类的属性,例如: ```jsp <s:checkbox name="employee.skills" label="技能选择" list="{'Java','Python','JavaScript'}"/> ``` 这里`employee.skills`是Action...
### Struts2与Spring的集成详解 #### Struts2框架概览 Struts2是Apache组织下的开源项目,它是基于MVC模式的Web应用框架,主要用于构建企业级Java Web应用程序。Struts2提供了丰富的标签库,支持AJAX,且与各种第...
**JSTree与Struts2整合详解** JSTree是一款基于JavaScript的开源库,用于创建交互式的树形结构。它提供了丰富的API和多种主题,使得在网页中展示和操作层次数据变得简单。而Struts2则是一个强大的MVC(Model-View-...
当Struts2与Spring框架集成时,可以通过该拦截器实现依赖注入,从而避免手动配置依赖关系。 2. **Chain (链式调用)** - **功能**:支持在一个Action执行完毕后继续调用另一个Action。通常在复杂的业务逻辑中使用...
综上所述,正确地处理checkbox的数组传值不仅涉及到前端的HTML与JavaScript编程,还关系到后端框架如Struts的数据绑定和处理。通过合理运用这些技术,开发者可以构建出功能完善、用户友好的Web应用程序,有效地管理...
**Struts2与Ajax集成:** Struts2通过JSON结果类型支持Ajax请求。你可以创建一个Action,配置为返回JSON结果,然后在JavaScript中使用Ajax调用这个Action。Struts2的插件如struts2-jquery或struts2-dojo可以帮助更...
Struts2的标签库是一系列预定义的JSP标签,它们提供了与Struts2框架交互的能力,帮助开发者在JSP页面中实现业务逻辑和控制流程。主要包含以下几类标签: 1. 动作标签(Action Tags):如`s:action`,用于调用Struts...
<s:checkboxlist name="userBean.interests" list="{hibernate,spring,struts2}" /> ``` 可以设置默认选中项,例如通过`value="hibernate"`指定默认值。 #### 13. `<s:if>`, `<s:elseif>`, `<s:else>` — 条件...
- **Action Mappings**:定义了 URL 请求与具体的 Action 类之间的映射关系。 - **Message Resources**:用于配置国际化资源文件。 - **Plugins**:用于配置插件,例如 Validator 插件。 ##### Form Beans 定义示例...
### jQuery、Struts2、Hibernate知识点总结 #### 一、jQuery框架的作用与学习目标 - **作用**: jQuery 是一个轻量级的 JavaScript 库,它极大地简化了 HTML 文档的操作、事件处理、动画以及 Ajax 交互。其核心理念...
比如,`<logic:equal>`、`<logic:notEqual>`、`<logic:greaterEqual>`、`<logic:greaterThan>`、`<logic:lessEqual>`和`<logic:lessThan>`用于比较运算,判断变量与指定值的关系。此外,它还包含用于检查内容存在的...
【标题】:Oracle数据库与Struts框架结合的实例源代码 在软件开发中,Oracle数据库是一种广泛应用的关系型数据库管理系统,而Struts则是Java Web开发中的一款著名MVC(Model-View-Controller)框架。本实例将这两者...
- **ActionMapping**:定义Action与URL的映射关系。 - **ActionForm**:存储用户输入的数据,与Action一起工作。 - **Action**:业务逻辑处理类,实现具体的业务操作。 4. **配置文件**: - **struts-config....
### Struts2 标签的使用详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建高效、可维护的应用程序。其中,Struts2 提供了大量的标签库(Tag Library),这些标签...
Struts2+Spring+Hibernate(简称S2SH)框架结合jQuery可以很好地实现这种功能。本文将详细介绍如何使用S2SH框架配合jQuery实现复选框的批量选择,并在Action中获取这些被选中的数据。 #### 二、关键技术组件介绍 1...
- `action-mappings`:定义了请求URL与Action类之间的映射关系。 - `form-beans`:定义了ActionForm的bean属性,用于接收和验证表单数据。 - `global-exceptions`:全局异常处理配置。 - `global-forwards`:...