【发布时间】:2014-06-11 09:48:44
【问题描述】:
我正在编写一个 JSF 应用程序,它的上半部分包含一个带有字段的表单,下半部分包含一个数据表,每个项目上都有一个删除按钮:
<h:panelGrid columns="2" styleClass="default">
<h:outputLabel for="name" value="Name: " />
<h:inputText id="name" value="#{user.name}" />
<h:outputLabel for="name" value="Surname: " />
<h:inputText id="surname" value="#{user.surname}" />
<h:outputLabel for="name" value="Email: " />
<h:inputText id="email" value="#{user.email}" />
<h:commandButton actionListener="#{manager.save}"
styleClass="buttons" value="Save" />
<h:messages errorStyle="color: red" infoStyle="color: green" />
<br/>
<ui:debug/>
</h:panelGrid>
<br/>
<h:dataTable value="#{userList}" var="item" styleClass="table"
headerClass="table-header"
rowClasses="table-odd-row,table-even-row">
<h:column>
<f:facet name="header">Name</f:facet>
<h:outputText value="#{item.name}" />
</h:column>
<h:column>
<f:facet name="header">Surname</f:facet>
<h:outputText value="#{item.surname}" />
</h:column>
<h:column>
<f:facet name="header">Email</f:facet>
<h:outputText value="#{item.email}" />
</h:column>
<h:column>
<f:facet name="header">Delete</f:facet>
<h:commandButton actionListener="#{manager.delete(item)}"
styleClass="buttons" value="Delete" />
</h:column>
</h:dataTable>
</h:form>
在我对用户 Bean 应用约束之前,该应用程序一直有效:
public class User {
@Size(min = 5, max = 20, message = "Please enter a valid name (5-20 characters)")
private String name;
@Size(min = 5, max = 20, message = "Please enter a valid surname (5-20 characters)")
private String surname;
@Size(min = 5, message = "Mail size is at least 5 characters")
@Pattern(regexp = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+", message = "Email format is invalid.")
private String email;
}
现在,当我点击页面上的 Delete 按钮时 - 文本字段为空白 - 约束验证器启动,阻止 actionListener 执行。有没有办法解决这个问题? 非常感谢!
【问题讨论】:
标签: jsf jakarta-ee jsf-2