`
zjxs_sky100
  • 浏览: 30249 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2与checkbox的关系

阅读更多
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();
    }
分享到:
评论

相关推荐

    struts2中文教程

    - Configuration(配置):Struts2的配置文件(struts.xml)定义了Action、Interceptor、Result的映射关系,以及全局的配置信息。 四、Struts2的MVC架构 在Struts2中,模型由Action类表示,视图主要由JSP页面和...

    Struts2配置详解

    Struts2支持轻量级的依赖注入(IoC),使得开发者可以在配置文件中声明对象的创建和依赖关系,而不需要在代码中显式地创建对象或设置属性。这大大简化了应用程序的开发过程,提高了代码的可读性和可维护性。在上面的...

    Struts2 实现部门员工管理

    Struts2提供了`s:checkbox`标签,可以绑定到Action类的属性,例如: ```jsp &lt;s:checkbox name="employee.skills" label="技能选择" list="{'Java','Python','JavaScript'}"/&gt; ``` 这里`employee.skills`是Action...

    Struts2的总结和Strut2集成Spring

    ### Struts2与Spring的集成详解 #### Struts2框架概览 Struts2是Apache组织下的开源项目,它是基于MVC模式的Web应用框架,主要用于构建企业级Java Web应用程序。Struts2提供了丰富的标签库,支持AJAX,且与各种第...

    jstree struts2

    **JSTree与Struts2整合详解** JSTree是一款基于JavaScript的开源库,用于创建交互式的树形结构。它提供了丰富的API和多种主题,使得在网页中展示和操作层次数据变得简单。而Struts2则是一个强大的MVC(Model-View-...

    Struts2内置拦截器简介

    当Struts2与Spring框架集成时,可以通过该拦截器实现依赖注入,从而避免手动配置依赖关系。 2. **Chain (链式调用)** - **功能**:支持在一个Action执行完毕后继续调用另一个Action。通常在复杂的业务逻辑中使用...

    checkbox的数组传值

    综上所述,正确地处理checkbox的数组传值不仅涉及到前端的HTML与JavaScript编程,还关系到后端框架如Struts的数据绑定和处理。通过合理运用这些技术,开发者可以构建出功能完善、用户友好的Web应用程序,有效地管理...

    struts2资料

    **Struts2与Ajax集成:** Struts2通过JSON结果类型支持Ajax请求。你可以创建一个Action,配置为返回JSON结果,然后在JavaScript中使用Ajax调用这个Action。Struts2的插件如struts2-jquery或struts2-dojo可以帮助更...

    struts2 taglib ognl java jsp

    Struts2的标签库是一系列预定义的JSP标签,它们提供了与Struts2框架交互的能力,帮助开发者在JSP页面中实现业务逻辑和控制流程。主要包含以下几类标签: 1. 动作标签(Action Tags):如`s:action`,用于调用Struts...

    struts2入门,struts2 标签

    &lt;s:checkboxlist name="userBean.interests" list="{hibernate,spring,struts2}" /&gt; ``` 可以设置默认选中项,例如通过`value="hibernate"`指定默认值。 #### 13. `&lt;s:if&gt;`, `&lt;s:elseif&gt;`, `&lt;s:else&gt;` — 条件...

    struts的总结(struts1.x)

    - **Action Mappings**:定义了 URL 请求与具体的 Action 类之间的映射关系。 - **Message Resources**:用于配置国际化资源文件。 - **Plugins**:用于配置插件,例如 Validator 插件。 ##### Form Beans 定义示例...

    jQuery struts2 hibernate

    ### jQuery、Struts2、Hibernate知识点总结 #### 一、jQuery框架的作用与学习目标 - **作用**: jQuery 是一个轻量级的 JavaScript 库,它极大地简化了 HTML 文档的操作、事件处理、动画以及 Ajax 交互。其核心理念...

    Struts标签库 ppt教程

    比如,`&lt;logic:equal&gt;`、`&lt;logic:notEqual&gt;`、`&lt;logic:greaterEqual&gt;`、`&lt;logic:greaterThan&gt;`、`&lt;logic:lessEqual&gt;`和`&lt;logic:lessThan&gt;`用于比较运算,判断变量与指定值的关系。此外,它还包含用于检查内容存在的...

    一个基于oracle 数据库的struts 的例子的源文件

    【标题】:Oracle数据库与Struts框架结合的实例源代码 在软件开发中,Oracle数据库是一种广泛应用的关系型数据库管理系统,而Struts则是Java Web开发中的一款著名MVC(Model-View-Controller)框架。本实例将这两者...

    struts1标记一下

    - **ActionMapping**:定义Action与URL的映射关系。 - **ActionForm**:存储用户输入的数据,与Action一起工作。 - **Action**:业务逻辑处理类,实现具体的业务操作。 4. **配置文件**: - **struts-config....

    struts2标签的使用

    ### Struts2 标签的使用详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建高效、可维护的应用程序。其中,Struts2 提供了大量的标签库(Tag Library),这些标签...

    S2SH+JQuery的checkbox批量选择并在action中获取数据

    Struts2+Spring+Hibernate(简称S2SH)框架结合jQuery可以很好地实现这种功能。本文将详细介绍如何使用S2SH框架配合jQuery实现复选框的批量选择,并在Action中获取这些被选中的数据。 #### 二、关键技术组件介绍 1...

    Struts 标签 和配置

    - `action-mappings`:定义了请求URL与Action类之间的映射关系。 - `form-beans`:定义了ActionForm的bean属性,用于接收和验证表单数据。 - `global-exceptions`:全局异常处理配置。 - `global-forwards`:...

Global site tag (gtag.js) - Google Analytics