我有一个PrimeFaces对话框,我要求提供用户详细信息。我将其简化为只有一个输入文本,如下所示。
<p:dialog>
<h:form prependId="false">
<p:growl showDetail="false" autoUpdate="true" life="4000"/>
<p:panelGrid columns="2">
<h:outputText value="First Name" />
<p:inputTextarea required="true" requiredMessage="First Name is required!" />
<p:commandButton value="Add" actionListener="#{myBean.addUser}"/>
</p:panelGrid>
</h:form>
</p:dialog>
我注意到当我没有输入我的名字时,我的动作监听器没有被调用,我认为这是正常的,因为required="true"
验证已经发生。
有没有办法配置这个,我的动作监听器仍会被调用?
或者我是否必须删除required="true"
检查并将所有验证放入我的动作侦听器方法中?
答案 0 :(得分:2)
如果您想调用actionListener
方法而不考虑<p:inputTextarea/>
的值,只需删除required="true"
并在您的操作方法中进行验证:
public void addUser() {
if(StringUtils.isBlank(user.firstName)) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error! ",
"First Name is required!"));
return;
}
}
来自import org.apache.commons.lang3.StringUtils的isBlank;
相依:
在我看来,这种做法似乎是一个坏主意。