JavaWebSphere7JSF
在我的项目中,我们使用JSF 1.2和JBOSS 5开发了一个项目。作为新需求的一部分,我们必须将其迁移到WebSphere7。但我们面临一个问题,我怀疑这与WAS内部使用的java运行时有关。它不能自动装箱整型,不能隐式地将字符串转换为long。在提供了必要的检查之后,我最终陷入了以下验证异常:
/Star/employeeFormP1。jsp(226,4)#{StarEmployeeApplicationFormBean.medicalHMO}无法在类“com”上设置属性“medicalHMO”。主意应用程序。豆StarEmployeeApplicationFormBean'将值设置为true
以下是相关代码:
<h:selectBooleanCheckbox id="checkbox1"
value="#{StarEmployeeApplicationFormBean.medicalHMO}"
title="click it to select or deselect"
immediate="true"
valueChangeListener="#{StarEmployeeApplicationFormBean.listHMOMedProducts}"
onchange="return submit()" />
有人能帮我解决这个验证例外吗
# 1 楼答案
可能是您正在使用IBM JVM,我前不久注意到一个错误,如果您使用
==
将int与long进行比较,并使用相同的值,它会自动装箱并返回false
例如,使用此方法:
amIEqual(3,3)
是false
在我使用的IBM JVM上为了解决这个问题,我显式地使用了对象类型:
现在,
amIEqual(3,3)
突然变成了true
# 2 楼答案
JBoss 5和WebSphere 7是JEE5服务器,因此JSF 1.2 impl将只使用平台提供的EL实现。类型强制的规则在the JSP 2.1 spec中有详细说明:
根据规范中详细的规则,这听起来像是WebSphere实现中的一个bug。如果你找不到解决这个问题的现有APAR/Fix Pack,我会报告
# 3 楼答案
WAS7.0实际使用JDK1.6,WAS6.1使用JDK1.5
自动装箱适用于我,从整数到整数等等
我同意字符串到原语类型的转换不是“自动装箱”的一部分的说法
medicalHMO的setter是解决问题的关键,它期望什么类型
例如,如果您有setMedicalHMO(字符串newValue){…}
添加另一个setter setBooleanMedicalHMO(布尔newValue){…}
# 4 楼答案
我不确定到底是什么问题。我只有几点意见:
如果不发布一些代码,很难判断