我有下一个jsf表格,有2个部分
1)标题表格 2)数据表字段
我想要对2个部分添加验证,但是当我发布标题表格时,不需要验证datatable,当我更新行数据表时,不需要验证标题表单。我的问题是,当我发布更新行数据表时,jsf想验证标题表单..
我的问题是...... 仅使用没有富面或其他库的JSF 2实现,如何使用jsf来验证部分表单?管理子表单的最佳方法是什么?
谢谢,
这是我的示例代码
<h:form styleClass="horizontal-form" id="form">
<h:messages></h:messages>
<h3>
<h:outputText value="#{msgs.title}"></h:outputText>
</h3>
<table>
<tr>
<td><h:outputLabel for="userName" id="nameLbl">Name</h:outputLabel></td>
<td><h:inputText id="userName" value="#{actionBean.name}"
styleClass="form-control" required="true" /> <h:message
for="userName"></h:message></td>
</tr>
<tr>
<td>Monto:</td>
<td><h:inputText id="userAmount" value="#{actionBean.amount}"
label="Edad" /> <h:message for="userAmount"></h:message></td>
</tr>
</table>
<div>
Datatable
<h:dataTable value="#{actionBean.items}" var="item" id="datatable">
<h:column>
<f:facet name="header">
<h:outputText value="Nombre"></h:outputText>
</f:facet>
<h:outputText value="#{item.data.name}" rendered="#{!item.edit}"></h:outputText>
<h:inputText id="inputName" value="#{item.editData.name}" required="true"
rendered="#{item.edit}"></h:inputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Actions"></h:outputText>
</f:facet>
<h:commandButton value="Edit"
action="#{actionBean.edit(item)}" rendered="#{!item.edit}"
immediate="true" styleClass="btn btn-sm btn-primary">
<f:ajax execute="form" render="form" />
</h:commandButton>
<h:commandButton value="Update"
action="#{actionBean.update(item)}" rendered="#{item.edit}"
styleClass="btn btn-sm btn-primary ">
<f:ajax execute="datatable" render="form" />
</h:commandButton>
</h:column>
</h:dataTable>
</div>
<p>
<h:commandButton value="Login" action="#{actionBean.count}"
styleClass="btn btn-sm btn-primary">
<f:ajax execute="form" render="form datatable_form" />
</h:commandButton>
<h:commandButton value="Begin" action="index" immediate="true"
styleClass="btn btn-sm btn-primary" />
</p>
</h:form>
答案 0 :(得分:1)
这可能正在发生,因为您正在尝试更新整个表单而不仅仅是数据表。
示例:
<h:commandButton value="Edit"
action="#{actionBean.edit(item)}" rendered="#{!item.edit}"
immediate="true" styleClass="btn btn-sm btn-primary">
<f:ajax execute="form" render="form" />
</h:commandButton>
在这种情况下,你应该尝试执行/渲染你想要验证的数据,就像这样:
<h:commandButton value="Edit"
action="#{actionBean.edit(item)}" rendered="#{!item.edit}"
immediate="true" styleClass="btn btn-sm btn-primary">
<f:ajax execute="datatable" render="datatable" />
</h:commandButton>