我的一个自定义JSF组件出现问题。我的组件名为inputTextCustom
。
在其中一个使用此自定义组件的页面中,我有:
<s:inputTextCustom length="400px"/>
在我的自定义组件定义中,我使用h:inputText
,如下所示:
<ui:composition>
....
....
<h:inputText style="width:#{empty length ? 500px : length}" />
....
....
</ui:composition>
但是,我得到以下例外:
javax.el.ELException: Error Parsing: width:#{empty length ? 500px : length}
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:125)
at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:150)
at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:194)
at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
at com.sun.facelets.tag.TagAttribute.getValueExpression(TagAttribute.java:256)
... 119 more
Caused by: org.apache.el.parser.ParseException: Encountered " "?" "? "" at line 1, column 22.
Was expecting one of:
"}" ...
"." ...
"[" ...
">" ...
"gt" ...
"<" ...
"lt" ...
">=" ...
"ge" ...
"<=" ...
"le" ...
"==" ...
"eq" ...
"!=" ...
"ne" ...
"&&" ...
"and" ...
"||" ...
"or" ...
"*" ...
"+" ...
"-" ...
"/" ...
"div" ...
"%" ...
"mod" ...
at org.apache.el.parser.ELParser.generateParseException(ELParser.java:2142)
at org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:2024)
at org.apache.el.parser.ELParser.DeferredExpression(ELParser.java:113)
at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:40)
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:93)
... 123 more
有人能告诉我这里的错误吗?
提前致谢!
答案 0 :(得分:1)
如果要在EL中表示字符串值,则需要明确引用它们。
<h:inputText style="width:#{empty length ? '500px' : length}" />
双引号在语法上也是有效的,但是当表达式在标记属性值中内联时,它通常不会与普通编辑器的语法高亮显示(也不是SO中的那个)非常好地混合。本身用双引号括起来。
<h:inputText style="width:#{empty length ? "500px" : length}" />