Jsf Tomcat8升级后出现异常
自从从Tomcat6升级到Tomcat8以来,我遇到了以下异常。在Tomcat6中,项目工作正常。该项目包含Hibernate 3.3.1和Spring 2.5.5。JSF版本是2.1.3。目前使用的是Java6。由于Tomcat8需要Java7,因此也需要进行升级。 我已经用选项org.apache.el.parser.convere_TO_ZERO尝试过了,但是没有用。也许你们当中有人能帮我解决问题?预期的行为应该是在jsf页面中使用默认的灰色 作为一个暗示,也许它会有所帮助。我在Tomcat7中尝试过,结果与在Tomcat8中相同。对于Tomcat7测试,我使用了与之相同的Java版本,它现在在Tomcat6下工作。在这个测试中唯一的变化是Tomcat版本从6变为7 jsf页面的代码片段:Jsf Tomcat8升级后出现异常,jsf,tomcat7,java-7,el,tomcat8,Jsf,Tomcat7,Java 7,El,Tomcat8,自从从Tomcat6升级到Tomcat8以来,我遇到了以下异常。在Tomcat6中,项目工作正常。该项目包含Hibernate 3.3.1和Spring 2.5.5。JSF版本是2.1.3。目前使用的是Java6。由于Tomcat8需要Java7,因此也需要进行升级。 我已经用选项org.apache.el.parser.convere_TO_ZERO尝试过了,但是没有用。也许你们当中有人能帮我解决问题?预期的行为应该是在jsf页面中使用默认的灰色 作为一个暗示,也许它会有所帮助。我在Tomca
.tableRow2 {
background-color: #{bean.greyRowColorValue};
}
对应java bean的代码:
private String DEFAULT_GREY = "#F6F6F6";
public String getGreyRowColorValue() {
if(greyRowColorValue == null) {
RequestContextData requestContext = ContextUtil.getRequestContextData();
if (SystemEnum.XY.getId().equals(requestContext.getSystem()) ||
SystemEnum.ZY.getId().equals(requestContext.getSystem())) {
// get from DB
UserSettingsFacade facade = (UserSettingsFacade) ObjectFactory.getInstance().getObject("userSettingsFacade");
Result<UserSettingsModel> result = facade.getUserSettings(requestContext);
if(!result.isSuccess()) {
return DEFAULT_GREY;
}
UserSettingsModel userSettingsModel = result.getResult();
if(userSettingsModel == null) {
return DEFAULT_GREY;
}
// if DB delivers null
UserSettings userSetting = userSettingsModel.getUssColumn(UserSettingsModel.GREY_SCALE_FOR_XY);
if(userSetting == null){
greyRowColorValue = DEFAULT_GREY;
return DEFAULT_GREY;
}
greyRowColorValue = userSettingsModel.getUssColumn(UserSettingsModel.GREY_SCALE_FOR_XY).getUssColFilter();
if(greyRowColorValue == null) {
greyRowColorValue = DEFAULT_GREY;
return DEFAULT_GREY;
}
} else {
return DEFAULT_GREY;
}
}
return greyRowColorValue;
}
2017年6月13日编辑:
我已经调试到了el的深处。我现在使用的tomcat的确切版本是8.5.4和Java1.8.0。
我看到BeanELResolver能够解决我的财产问题。在作为方法参数的ELContext中,resolved属性设置为true。在以下代码(javax.el.BeanELResolver第94行)之后,在ELContext中解析的属性将切换回false:
try {
return m.invoke(base, (Object[]) null);
} catch (InvocationTargetException e) {
有人能帮我解释一下为什么会发生这种情况吗?请创建一个类似于中所述的“我想我找到了根本原因”。问题是我们在EL调用的方法中使用了ELContext的另一个实例。这导致源ELContext(会话范围)被修改,因此无法解析另一个。请参阅我的其他问题,以了解解决此问题的其他方法:
try {
return m.invoke(base, (Object[]) null);
} catch (InvocationTargetException e) {