0

在使用 primefaces dataList 的迭代中,我想像这样有条件地渲染图像:

<ui:param name="curTriggerState" value="#{jobListController.getTriggerState(curJobTriggerInfo)}" />
<p:column rendered="#{showCurJobTrigger}">
    <h:outputText value="#{curTriggerState}" />
    <h:graphicImage value="/resources/images/triggerstate_none_48.png" 
        rendered="#{curTriggerState eq 'NONE'}" />
    <h:graphicImage value="/resources/images/triggerstate_normal_48.png" 
        rendered="#{curTriggerState eq 'NORMAL'}" />
    <h:graphicImage value="/resources/images/triggerstate_paused_48.png" 
        rendered="#{curTriggerState eq 'PAUSED'}" />
    <h:graphicImage value="/resources/images/triggerstate_complete_32.png" 
        rendered="#{curTriggerState eq 'COMPLETE'}" />
    <h:graphicImage value="/resources/images/triggerstate_error_48.png" 
        rendered="#{curTriggerState eq 'ERROR'}" />
    <h:graphicImage value="/resources/images/triggerstate_blocked_48.png" 
        rendered="#{curTriggerState eq 'BLOCKED'}" />
</p:column>

jobListController.getTriggerState 返回在相应渲染属性中检查的字符串。输出文本打印出正确的状态。但是没有绘制图像。如果我设置 render="true" 绘制图像,图像的路径是正确的。找不到我的错误。认为 ui:param 可能是原因,但 outputText 打印出正确的字符串。

4

3 回答 3

0

最后,我将其更改为生成代码较少的文件名。但我一般不喜欢根据状态生成文件路径并遵循文件名模式。但这有效:

<ui:param name="curTriggerStateName" value="#{jobListController.getTriggerStateName(curJobTriggerInfo)}" />
<h:graphicImage value="/resources/images/triggerstate_#{curTriggerStateName}_20.png" styleClass="triggerStateImage"
            title="#{curTriggerStateName}" />
于 2014-07-09T09:34:18.940 回答
0

这是我的错。后端服务此时是一个模拟,它随机返回触发状态。似乎支持bean(以及后端)不仅每个graphicImage调用一次,而且多次调用。当每个调用返回不同的触发状态时,图像和标题当然可以不同。我对此有点惊讶,因为我用 ui:param 分配了该值,并认为每个图形图像只会调用一次支持 bean 方法。

于 2014-07-09T12:42:22.140 回答
0

这有效......但我不喜欢它生成图像的路径

<ui:param name="curTriggerStateName" value="#{jobListController.getTriggerStateName(curJobTriggerInfo)}" />
<h:graphicImage value="/resources/images/#{jobListController.getTriggerStatusImageName(curJobTriggerInfo)}" 
                        style="margin-right: 3px !important;"/>
于 2014-07-08T09:29:38.447 回答