为数据表/数据网格中的多个必填字段添加 p:outputLabel

Adding p:outputLabel for multiple required fileds inside datatable / datagrid

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

示例代码:

<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>

我想将车名指向年份和价格,如果用户没有输入年份或/和价格,则必须增加一个必需的验证消息,并突出显示(并添加开始)到车名。

我已经找到解决这个问题的方法,使用 CSS 并添加额外的标签,这可能对 panelGrid 也有帮助(我认为 <p:column> 里面的任何东西),但我用 [=13 测试了它=] 仅:

<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 个正常标签,然后是错误标签,我认为您可以使用另一种样式来解决这种情况 class,玩转 CSS 魔法会有很棒的效果。