这是使用枚举时使用<c:when>的问题的后续问题
按照接受的答案提出建议后,我遇到了另一个问题.使用库函数部分生成实际图像路径(我的代码是示例代码)以获得主题图像路径.请理解我不允许透露真实的代码,所以当我在这里发帖时我必须剪掉很多东西.
第一个问题是h:graphicImage使用当前portlet的路径自动为img标签生成绝对图像路径.示例:我需要http://myserver/mytheme/portlet/image.gif但如果我使用<h:graphicsImage value="#{myNs:getThemePath()}image.gif" />它会呈现为http:// myserver/myportlet /mytheme/portlet/image.gif; 相反,使用<img src="#{myNs:getThemePath()}image.gif" />完美.
正如在另一个问题中所指出的,我需要根据ICEFaces表中迭代项的条件在图像之间切换,并且我还需要(出于可访问性的原因)alt使用本地化资源放置正确的属性.
简而言之,我的代码类似于以下(ice:dataTable省略)
<h:column>
<f:facet name="header">
<ice:outputText value="#{myNs:getLocale('state')}" />
</f:facet>
<img alt="[[TODO]]" src="#{myNs:getThemePath()}#{item.state == 'COMPLETED' ? 'ok' : 'ko'}.gif"
</h:column>
Run Code Online (Sandbox Code Playgroud)
src部分有效,但现在出现了问题.
如果我使用alt="#myNs:getLocale('prefix.#{item.state = 'COMPLETED' ? 'completed' : 'canceled'}')}我不能嵌套表达式(它不会被评估)
如果我<h:graphicsImage为这两种情况创建两个标签(不需要使用复杂的表达式alt)并使用rendered另一个问题的接受答案中描述的属性,我不会正确呈现图像URL.
我也不能使用<c:when标签,因为正如另一个问题所解释的那样,它总是被评估为假.
我能做些什么来满足这两个要求?如何<img根据我的条件使用两个标签并切换渲染?
谢谢
[add]幸运的是,在组合表达式时,我在Tomcat日志上收到以下异常消息.有人可以帮我更好地学习EL表达吗?我是JSF的新手
Caused by: org.apache.el.parser.ParseException: Encountered "#" at line 1, column 32.
Was expecting one of:
<INTEGER_LITERAL> ...
<FLOATING_POINT_LITERAL> ...
<STRING_LITERAL> ...
"true" ...
"false" ...
"null" ...
"(" ...
"!" ...
"not" ...
"empty" ...
"-" ...
<IDENTIFIER> ...
<FUNCTION_CALL> ...
Run Code Online (Sandbox Code Playgroud)
回答有条件地呈现普通香草HTML的能力的具体问题; 只需将它们包装在一个支持该rendered属性的JSF组件中,但它本身不输出任何内容.
<h:panelGroup rendered="#{item.state == 'COMPLETED'}">
<img src="ok.gif" />
</h:panelGroup>
<h:panelGroup rendered="#{item.state == 'CANCELLED'}">
<img src="ko.gif" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
您也<ui:fragment>可以在使用Facelets时使用.它的开销略低.
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |