我有一个dataTable,当我编辑它时,我希望它验证是否assignQuota> = usedQuota。我怎么能这样做?
<p:dataTable id="vessels" var="ves" value="#{assignedVessels}" editable="true">
<p:column>
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{ves.assignedQuota}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{ves.assignedQuota}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{ves.usedQuota}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{ves.usedQuota}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:rowEditor/>
</p:column>
答案 0 :(得分:3)
您可以使用 ajax事件 ,例如:
<p:ajax event="rowEdit" listener="#{bean.onRowEdit}"/>
进入 p:dataTable 并在bean中创建follow方法:
public void onRowEdit(RowEditEvent event) {
// add you check here (assignedQuota >= usedQuota)
}
答案 1 :(得分:0)
对于一个简单的解决方案,您可以在控制器中检查这种情况。 更优雅的方式是为您的容器bean定制约束验证器。例如,请参阅hibernat doc。
这里唯一的技巧是你必须为bean(@Target({TYPE})
)创建一个验证器,而不是为一个配额值。成员的验证者不能引用其他成员。