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) |
分享到:
相关推荐
参数校验器和整合Mybatis&MybatisPlus.md
2.该校验器支持多层嵌套传参参数校验,且能精准定位校验位置,并给出友好校验提示 3.定义校验类通俗易懂,和传参结构保持一致,可读性很强。编写校验类也很简单。 适用人群: 企业python后端开发人员,在学习python...
MD5计算&校验工具 是本人自己写的小工具,版权遵从自由软件。您可以自由传播。
表单校验文件下载 解压后上myeclipse可以直接运行
第二节课,后端登录代码 & 校验本人操作
JAVA版 MODBUS CRC16校验 (已测试成功)
使用jacob技术,对输入的文字进行转语音,并存储到指定文件夹wav格式文件。 使用百度的文字敏感校验,对输入文本进行检测。 整合log4j2的log处理
表达式求值,表达式校验,C#,中缀表达式,算符优先
CRC校验、累加和校验、异或和校验专业校验工具,智能提醒!
我们常使用的检验码有三种. 分别是 奇偶校验码,海明校验码 和 循环冗余校验码(CRC)
文件校验工具 MD5 校验王中文版文件校验工具 MD5 校验王中文版 MD5 校验王可以对任意文件进行版本,文件时间,MD5值,SHA1值,CRC32值的校验。 计算选项: 版本:当选择校验文件为exe或者dll文件时,在运算结果中...
奇偶校验码 海明校验码 CRC校验码奇偶校验码
累加和校验、异域和校验工具、CRC16校验、CRC32校验,挺好的,非常好用的小工具,可以使用这个工具进行校验
文档中包含了CRC8位数据校验 CRC16位数据校验 和校验 异或校验等常用校验方式,使用C++代码编写,很实用。
轻松应用CRC校验CRC校验应用实例CRC校验应用实例CRC校验应用实例
CRC16校验JS算法,crc.js为直接生成法,crc1.js为查表法,包含CRC16和ModbusCRC16,校验可以包含中文汉字,具体使用请看demo.html
之前上传了一份,可能是因为用VS2019编译的,一些电脑上无法运行,缺少对应的动态库, 所以重新用Dev C++编译了一下,这个经过在那些不能使用的电脑上验证可以正常使用 功能:----------->Ox16进制指令集校验码...
累加校验和CRC16校验计算器,对输入控制的不好,重新输入建议清空后重新输入
基于Spring boot + maven,以注解+AOP方式实现的java后端项目接口参数校验框架。迄今为止使用最简单、最容易理解的参数校验方案。博客地址:https://blog.csdn.net/weixin_42686388/article/details/104009771
前段时间使用串口发数据用到了校验和,网上查了一些都不太对,设备供应商那边只有c#demo,网上查了一下校验和计算方法,终于搞定了,附上代码,也有c#版的,我用的xe2,2010以下自己换成string好了