基于primefaces数据表中其他列的值渲染值

时间:2012-04-18 06:48:17

标签: jsf-2 primefaces

我在primefaces的数据表中显示了一些值。

这是代码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">

    <h:head>
        <title>Custom Rendering Data Table Test</title>
    </h:head>
    <h:body>
        <p:layout fullPage="true">
            <p:layoutUnit position="center">
                <p:dataTable var="car" value="#{tableBean.mediumCarsModel}" selection="#{tableBean.selectedCar}" 
                id="carList" paginator="true" rows="10" editable="true">  

        <f:facet name="header">  
            In-Cell Editing  
        </f:facet>

        <p:column selectionMode="multiple" style="width:18px" />  

        <p:column headerText="User Name" style="width:100px">
        <p:graphicImage value="C:\raman\AMAP\POC\primefaces\JSF2.0HelloWorld\WebContent\images\rssLogo.gif"/>    
        <p:graphicImage value="C:\raman\AMAP\POC\primefaces\JSF2.0HelloWorld\WebContent\images\System.gif"/>    
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.username}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.username}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column> 


        <p:column headerText="Model" style="width:125px">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.model}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.model}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  

        <p:column headerText="Year" style="width:125px">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.year}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.year}" style="width:100%" label="Year"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  

        <p:column headerText="Manufacturer" style="width:125px">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.manufacturer}" />  
                </f:facet>  
                <f:facet name="input">  
                    <h:selectOneMenu value="#{car.manufacturer}" >  
                        <f:selectItems value="#{tableBean.manufacturers}"  
                            var="man"   
                            itemLabel="#{man}"  
                            itemValue="#{man}" />  
                    </h:selectOneMenu>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  

        <p:column headerText="Color" style="width:125px">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.color}" />  
                </f:facet>  
                <f:facet name="input">  
                    <h:selectOneMenu value="#{car.color}" >  
                        <f:selectItems value="#{tableBean.colors}"  
                            var="color"   
                            itemLabel="#{color}"  
                            itemValue="#{color}" />  
                    </h:selectOneMenu>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  

        <p:column headerText="Options" style="width:100px">  
            <p:rowEditor />  
        </p:column>  

    </p:dataTable>  
            </p:layoutUnit>
        </p:layout>                        
    </h:body>
</html>

现在,我必须阅读年份的价值,如果年份将小于1990年,那么我必须显示rsslogo图像,如果没有,则显示系统图像。

请让我知道如何在素数表面做这件事...我是初学者,仍处于学习阶段....

1 个答案:

答案 0 :(得分:3)

使用条件渲染:

<p:graphicImage value="path/to/your/image1" rendered="#{car.year lt 1990}/>
<p:graphicImage value="path/to/your/image2" rendered="#{car.year ge 1990}/>

使用正确的路径替换value属性的内容(您不应使用问题中显示的绝对路径!!)。

关键字lt表示“小于”,ge表示“大于或等于”。