我有一个PrimeFaces <p:dataGrid>
组件,其中包含可变数量的面板。每个面板包含许多派生组件。我在每个面板中都有一个删除按钮,允许删除。我还在dataGrid外面有一个添加按钮。我没有在按钮上使用immediate="true"
,而是想出了如何在每个面板中设置每个组件的必需属性。
例如:
required="#{empty param['vehicleGrid:0:btnDelete'] and empty param['btnAdd']}".
对于dataGrid中的每个删除按钮和添加按钮,忽略组件验证。
如果dataGrid中有一个面板,但它只引用第一个面板,则此方法有效。我需要动态检查每个面板。也许我不需要从标记页面查看它,也许我需要用Java术语来看它,因为param是Map<String, String>
。
答案 0 :(得分:0)
将删除按钮组件绑定到视图并改为使用UIComponent#getClientId()
。
<h:inputText ... required="#{empty param[deleteButton.clientId]}" />
...
<h:commandButton binding="#{deleteButton}" ... />
这样,将在参数映射中查找正确的客户端ID,然后无需迭代参数映射。