Jsf Websphere无法在EL中使用保留字

Jsf Websphere无法在EL中使用保留字,jsf,websphere,el,jsf-1.2,websphere-8,Jsf,Websphere,El,Jsf 1.2,Websphere 8,我有一个JSF1.2应用程序,它可以在Tomcat6和Tomcat7上很好地部署。 到目前为止还不错 其中一个页面在h:inputText上包含以下属性: disabled="#{quoteFinance.quoteSaved or quoteRequest.quoteDisabled or setting.protected}" 这在前面提到的Tomcat服务器上验证并正常工作。 但是,websphere8认为这是一个问题,并抛出以下错误: disabled="#{quoteFinanc

我有一个JSF1.2应用程序,它可以在Tomcat6和Tomcat7上很好地部署。 到目前为止还不错

其中一个页面在h:inputText上包含以下属性:

 disabled="#{quoteFinance.quoteSaved or quoteRequest.quoteDisabled or setting.protected}"
这在前面提到的Tomcat服务器上验证并正常工作。 但是,websphere8认为这是一个问题,并抛出以下错误:

 disabled="#{quoteFinance.quoteSaved or quoteRequest.quoteDisabled or setting.protected}" [protected] is not a valid Java identifier
at com.sun.facelets.tag.TagAttribute.getValueExpression(TagAttribute.java:259)
at com.sun.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:69)
at com.sun.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:36)
at com.sun.facelets.tag.MetaTagHandler.setAttributes(MetaTagHandler.java:76)

Cause:
javax.el.ELException: [protected] is not a valid Java identifier
at org.apache.el.parser.AstDotSuffix.setImage(AstDotSuffix.java:45)
at org.apache.el.parser.ELParser.DotSuffix(ELParser.java:1067)
at org.apache.el.parser.ELParser.ValueSuffix(ELParser.java:1033)
at org.apache.el.parser.ELParser.Value(ELParser.java:978)
at org.apache.el.parser.ELParser.Unary(ELParser.java:948)
at org.apache.el.parser.ELParser.Multiplication(ELParser.java:712)
at org.apache.el.parser.ELParser.Math(ELParser.java:632)
at org.apache.el.parser.ELParser.Compare(ELParser.java:444)
at org.apache.el.parser.ELParser.Equality(ELParser.java:338)
at org.apache.el.parser.ELParser.And(ELParser.java:282)
我对{msg.continue}也有类似的问题,这很好,但是因为continue是一个保留字,所以WAS8向我抛出了一个错误

为什么websphere在代码完美运行时不接受这一点? 我如何解决这个问题?
非常感谢

protected也是一个java保留字!就像continue一样,protected也是一个java保留字!就像规范中的continue一样:

标识符被约束为Java标识符-例如,no-,no/,等等

protected不能用作Java中的标识符,因为它是保留的

这一限制也适用于EL 2.1,因此这可能是旧平台EL解析器中的一个bug,它曾经起作用。

规范:

标识符被约束为Java标识符-例如,no-,no/,等等

protected不能用作Java中的标识符,因为它是保留的

这一限制也适用于EL 2.1,因此这可能是旧平台EL解析器中的一个bug,它曾经起过作用。

此行为符合。您需要将属性名称重命名为非Java文本的名称,或者需要使用大括号表示法,以便将其作为字符串引用

{设置['protected']} 及

{msg['continue']} 这在Tomcat7中也应该失败,也许您使用的是一个相当旧的Tomcat7版本。这是固定在7.0.0和7.0.10之间的某个位置。目前已达到7.0.28。

此行为符合。您需要将属性名称重命名为非Java文本的名称,或者需要使用大括号表示法,以便将其作为字符串引用

{设置['protected']} 及

{msg['continue']}
这在Tomcat7中也应该失败,也许您使用的是一个相当旧的Tomcat7版本。这是固定在7.0.0和7.0.10之间的某个位置。目前已达到7.0.28。

这可能会有所帮助。下面的调用f.createValueExpressionctx,this.value,type中似乎引发了异常。其中f是Websphere上的ExpressionFactory实现。这可能会有所帮助。下面的调用f.createValueExpressionctx,this.value,type中似乎引发了异常。其中f是Websphere上的ExpressionFactory实现。我知道。我只是想知道为什么这些语句在Tomcat、WAS6、WAS7中有效,而在WAS8中不再有效。我只是想知道为什么这些语句在Tomcat、WAS6、WAS7中有效,而在WAS8中不再有效。我会在回去工作时再查看。明天更新版本;确认。当Tomcat6.0.32在Tomcat7.0.24中抛出错误时,这些表达式在Tomcat6.0.32中是允许的。明天更新版本;确认。这些表达式在Tomcat6.0.32中是允许的,但在Tomcat7.0.24中会抛出错误。