为datatable / datagrid中的多个必填字段添加p:outputLabel

时间:2015-04-15 08:21:06

标签: primefaces jsf-2.2

我有简单的Primefaces DataTable,在这个DataTable里面我有一个p:outputLabel,我需要for属性来指向多个inputFields,我该怎么做?

示例代码:

<p:dataTable var="car" value="#{mbBasicView.cars}">
    <p:column headerText="Id">
        <p:outputText value="#{car.name}" />
    </p:column>

    <p:column headerText="Year">
        <p:inputText id="carYear" value="#{car.year}" />
    </p:column>

    <p:column headerText="Brand">
        <h:inputText id="carPrice" value="#{car.price}" />
    </p:column>
</p:dataTable>

我想将汽车名称指向年份和价格,如果用户未输入年份或/和价格,则必须上升所需的验证消息,并突出显示(并添加开始)到汽车名称。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法,使用CSS并添加了额外的标签,这对于panelGrid也有帮助(我认为<p:column>内的任何内容),但我只用DataTable进行了测试:

<p:dataTable var="car" value="#{mbBasicView.cars}">
    <p:column headerText="Id">
        <p:outputText styleClass="car-name" for="carYear" value="#{car.name}" />
        <p:outputText styleClass="car-name" for="carPrice" value="#{car.name}" />
    </p:column>

    <p:column headerText="Year">
        <p:inputText id="carYear" value="#{car.year}" />
    </p:column>

    <p:column headerText="Brand">
        <h:inputText id="carPrice" value="#{car.price}" />
    </p:column>
</p:dataTable>

如果另一个是错误状态或重复,则隐藏归档的css样式:

.car-name {
   display:none;
}

.car-name.ui-state-error {
   display:block;
}
.car-name ~ .car-name {
   display:block;
}
.car-name ~ .car-name.ui-state-error {
   display:block;
}

.car-name.ui-state-error ~ .car-name{
   display:none;
}

希望这会有所帮助,如果你有超过2个字段它将起作用,除非你有2个普通标签然后错误标签,我想你可以用另一个样式类来玩这个案例,玩CSS魔术会做得很棒。