Jsf Websphere无法在EL中使用保留字
我有一个JSF1.2应用程序,它可以在Tomcat6和Tomcat7上很好地部署。 到目前为止还不错 其中一个页面在h:inputText上包含以下属性: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
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中会抛出错误。