我有简单的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>
我想将汽车名称指向年份和价格,如果用户未输入年份或/和价格,则必须上升所需的验证消息,并突出显示(并添加开始)到汽车名称。
答案 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魔术会做得很棒。