Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Tomcat8升级后出现异常_Jsf_Tomcat7_Java 7_El_Tomcat8 - Fatal编程技术网

Jsf Tomcat8升级后出现异常

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

自从从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页面的代码片段:

.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) {