`
pengtyao
  • 浏览: 401074 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

commandLink&comandButton VS 传参&校验

阅读更多
1.Bug原因

      ***JAVAEE应用服务器管理控制台由于当时时间仓促,有部分页面未加入合法值校验。导致有些地方输入非法值时会出现异常。这一情况主要存在于编辑页面。编辑页面未加入校验的原因主要是由于当前使用的commandLink组件不太方便使用采用事件驱动进行校验,而如果改用commandButton组件后可以弥补这一缺陷,但是其向JSF Managed Bean传送参数的方式有别于commandLink(commandLink可直接在组件中进行传参,comandButton不行),导致JSF Managed Bean接收参数方式也不同,而JSF Managed Bean中现在都是按照commandLink传入参数形式来接收的(接收commandLink传入参数只需commandLink传参组件的ID,接收commandButton传入参数需:表单ID:传参组件ID)

2.Bug解决方案

      考虑到以后会将所有未加校验的地方整理出来,作为下一版需求,这里暂时只在JDBC连接池的创建页面、编辑页面,Ajp通道的创建页面加入输入参数的合法值校验,Ajp通道编辑页面和连接池创建编辑页面暂不进行修正。

数值验证的规则:

1.数值不能为空

2.数值只能是数字,不能含有其它字符,如果参数明显为非负数的范围为:[0 , 2147483647](如果值明显不能为0的则范围为:[1 , 2147483647]);无正负之分的则范围为:                 [-2147483648 , 2147483647]。

3.如果几个数值间有相互依赖关系(比如:最大值不能小于最小值,最小值不能大于最大值),那么应该验证该依赖关系,以保证数值间的正确关系。

实现方案:
   "创建"、"保存"都改用commandButton来代替commandLink组件,并在组件外部使用inputHidden组件进行传参。JSF Managed Bean增加一种接收参数方式:如果按接收commandLink参数方式接收到的参数为空,则再采用接收commandButton传参方式进行一次接收,例如:

jdbcPoolName = FacesUtils.getRequestParameter("connectPoolName");

        if (jdbcPoolName == null || jdbcPoolName.equals("")) {
            jdbcPoolName = FacesUtils
                    .getRequestParameter("jdbcpoolform:connectPoolName");
        }


如果页面有校验不通过的项,通过onclick事件驱动来禁止点击"保存""创建"按钮。(暂时采用这种方案,可能还有更好的)

补充一种方案(下次采用这种方案):

f:param组件传值,这个只是对 h:commandLink起效,但f:attribute组件可以同时用于给commandLink和commandButton组件传值,这些属性可以通过相同方式取到(父组件的 getAttributes()方法),父组件可以通过传递给actionListener的ActionEvent实例取到。基本形式如下:

 <h:commandLink actionListener="#{myBean.action}">
        <f:attribute name="attrname1" value="attrvalue1" />
        <f:attribute name="attrname2" value="attrvalue2" />
        ...   
        <h:outputText value="Click here" />
    </h:commandLink>
    
    <h:commandButton value="Press here" actionListener="#{myBean.action}">
        <f:attribute name="attrname1" value="attrvalue1" />
        <f:attribute name="attrname2" value="attrvalue2" />
        ...
    </h:commandButton>public void action(ActionEvent event) 
    ...{   
        String attrvalue1 = (String) event.getComponent().getAttributes().get("attrname1");
        String attrvalue2 = (String) event.getComponent().getAttributes().get("attrname2");
        ...
    }

3.修改的代码

 Modified:
   trunk/TWNS-ConsoleSrc/src/com/tongtech/twns/console/view/jdbc/JdbcPoolEditInfo.java

   trunk/TWNS-ConsoleSrc/twns/config/webContainer/createAjpListener.jsp

   trunk/TWNS-ConsoleSrc/twns/jdbc/createConnectPoolProperties.jsp

   trunk/TWNS-ConsoleSrc/twns/jdbc/jdbcPoolList.jsp

   trunk/TWNS-ConsoleSrc/twns/resource/js/validation.js


PS:这貌似是工作以来修改的第一个产品Bug,很菜鸟... (on Apr 20, 2010)


0
1
分享到:
评论

相关推荐

    参数校验器和整合Mybatis&MybatisPlus.md

    参数校验器和整合Mybatis&MybatisPlus.md

    MD5计算&校验工具

    MD5计算&校验工具 是本人自己写的小工具,版权遵从自由软件。您可以自由传播。

    第二节课,后端登录代码 & 校验本人操作

    第二节课,后端登录代码 & 校验本人操作

    CheckTool:CRC校验、累加和校验、异或和校验专业校验工具V1.0

    《CheckTool:全面解析CRC、累加和及异或和校验在IT领域的应用》 在信息技术领域,数据的完整性和准确性至关重要。为确保数据在传输、存储过程中的无误,我们经常使用各种校验机制,如CRC(Cyclic Redundancy Check...

    JAVA版 MODBUS CRC16校验 &#40;已测试成功&#41;.doc

    JAVA版 MODBUS CRC16校验 &#40;已测试成功&#41;

    累加校验和CRC16校验计算器

    累加校验和CRC16校验是两种广泛应用于数据通信和存储系统中的错误检测机制。它们的主要目的是确保数据在传输或存储过程中没有发生错误,从而提高数据的可靠性。 **累加校验(Accumulator Checksum)** 累加校验是...

    BCC校验(异或校验)计算

    **BCC校验(异或校验)计算详解** 在信息技术领域,数据的准确性至关重要,因此,各种校验机制被广泛应用于确保数据在传输过程中的完整性。BCC(Block Check Character,块校验字符)是一种简单而有效的错误检测...

    常用数据校验源代码(CRC8 CRC16 和校验 异或校验)

    ### 数据校验技术详解 #### 一、引言 在计算机通信与数据处理领域中,数据的准确性至关重要。为了确保数据传输过程中不发生错误,通常会采用数据校验技术来进行错误检测。本篇文章将深入探讨几种常见的数据校验...

    累加和校验,异域和校验工具

    累加和校验与异域和校验是两种在数据通信和存储系统中常见的错误检测方法,用于确保数据在传输或存储过程中没有发生错误。这些校验方法在计算机科学和IT领域扮演着至关重要的角色,因为它们能有效地提高数据的可靠性...

    求加和校验累加和校验小工具

    加和校验与累加和校验是计算机领域中数据完整性检查的重要方法,主要用于确保数据在传输或存储过程中没有发生错误。这些校验方法在多种应用场景中都有所应用,例如在网络通信、数据库管理、文件传输等。下面我们将...

    十六进制字符串按位异或校验和和校验工具

    十六进制字符串按位异或校验和校验工具是一种在数据通信和计算机科学中广泛使用的错误检测方法。它的核心原理是基于异或(XOR)运算的特性来计算数据的校验和,以验证数据在传输过程中是否发生错误。下面我们将深入...

    串口实现编码数据的收发,带CRC校验,求和校验和奇偶校验

    本文将深入探讨如何通过串口实现编码数据的收发,并结合CRC校验、求和校验和奇偶校验来确保数据的准确无误。 首先,串口(Serial Port)是一种物理接口,用于设备之间的串行通信。它允许数据逐位地发送和接收,通常...

    BCC校验含源码

    在本案例中,我们有一个使用C#编程语言开发的项目,它包含VS(Visual Studio)环境下的源代码,可以用于理解和实现BCC校验功能。 **描述:“VS开发,c#语言,BCC校验赋源码,可直接运行。希望有帮助。”** 这个...

    奇偶校验电路实验报告

    奇偶校验电路是一种用于数据传输错误检测的基本方法,它通过添加一个额外的校验位来确保数据包中“1”比特的数量为奇数或偶数。这种技术在早期计算机通信和存储系统中广泛使用,因为其简单且能有效地检测单比特错误...

    奇偶校验,海明校验,CRC冗余校验c#可视化实现

    奇偶校验、海明校验和CRC冗余校验是数据通信和存储中常见的错误检测方法,用于确保数据在传输或存储过程中没有发生错误。这些校验技术都是基于简单的数学逻辑来创建一种额外的“校验位”,使得原始数据加上校验位后...

    文件校验工具 MD5 校验王 5.9.8.0 绿色中文免费版.zip

    文件校验工具 MD5 校验王中文版文件校验工具 MD5 校验王中文版 MD5 校验王可以对任意文件进行版本,文件时间,MD5值,SHA1值,CRC32值的校验。 计算选项: 版本:当选择校验文件为exe或者dll文件时,在运算结果中...

    LRC校验码自动生成

    **LRC校验码自动生成** LRC(Longitudinal Redundancy Check)纵向冗余校验是一种简单而有效的错误检测方法,常用于串行通信和数据存储中。它的主要目的是确保数据在传输或存储过程中的完整性。在Java编程语言中,...

    CRC16校验JS算法(查表法+直接生成法)

    CRC16校验是一种广泛应用的错误检测码,用于确保数据在传输或存储过程中没有发生错误。它是通过一种称为循环冗余校验的过程来计算的,该过程基于二进制数学运算。JS(JavaScript)是一种广泛使用的脚本语言,通常...

    hex校验和计算工具.zip

    在IT领域,校验和是一种常见的数据完整性检查方法,它用于确保数据在传输或存储过程中没有发生错误。这里我们关注的是“hex校验和计算工具”,这个工具主要用于计算十六进制值的校验和。标题中的"hex校验和计算工具....

Global site tag (gtag.js) - Google Analytics