[英]Websphere 7 JSF
在我的项目中,我们使用JSF 1.2和JBOSS 5开发了一个项目。作为新要求的一部分,我们必须将其迁移到Websphere7。但是,我们面临着一个我怀疑与WAS内部使用的Java运行时有关的问题。 它无法自动将int / Integers装箱,将字符串隐式转换为long。 在为其提供了必要的检查之后,我最终陷入了以下验证异常:
/Star/employeeFormP1.jsp(226,4)'#{StarEmployeeApplicationFormBean.medicalHMO}'无法将类'com.idea.app.bean.StarEmployeeApplicationFormBean'的属性'medicalHMO'设置为'true'。
以下相关代码:
<h:selectBooleanCheckbox id="checkbox1"
value="#{StarEmployeeApplicationFormBean.medicalHMO}"
title="click it to select or deselect"
immediate="true"
valueChangeListener="#{StarEmployeeApplicationFormBean.listHMOMedProducts}"
onchange="return submit()" />
有人可以帮我解决这个验证异常吗?
可能是您使用的是IBM JVM,我发现前不久有一个错误,如果您使用==
比较带有long且具有相同值的int,它将自动装箱并返回false
。
例如,使用此方法:
public boolean amIEqual(int myInt, long myLong){
return myInt == myLong;
}
在我使用的IBM JVM上, amIEqual(3,3)
为false
。
为了解决这个问题,我显式使用了对象类型:
public boolean amIEqual(Integer myInt, Long myLong){
return myInt.equals(myLong);
}
现在, amIEqual(3,3)
突然变为true
。
我不确定到底是什么问题。 我只有几点评论:
在为其提供了必要的检查之后,我最终陷入了以下验证异常:
/Star/employeeFormP1.jsp(226,4)'#{StarEmployeeApplicationFormBean.medicalHMO}'无法将类'com.idea.app.bean.StarEmployeeApplicationFormBean'的属性'medicalHMO'设置为'true'。
不发布代码就很难分辨。
WAS 7.0实际上使用JDK 1.6,WAS 6.1使用JDK 1.5。
自动装箱对我有效,从int到Integer等。
我同意这样的说法,即字符串到原始类型的转换不属于“自动装箱”。
medicalHMO的设置器是解决您问题的关键,它希望使用哪种类型?
例如,如果您有setMedicalHMO(string newValue){...}
添加另一个setter setBooleanMedicalHMO(boolean newValue){...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.