Boa Tarde pessoal.
Estou com problema de validar o cadastro de usuários utilizando a implementação Validator.
o meu modalPanel está da seguinte forma.
<%-- Início do modalPanelCadastroUsuario --%>
<rich:modalPanel id="modalPanelCadastroUsuario" width="400" height="400">
<f:facet name="header">
<h:outputText value="Cadastro de Usuário"/>
</f:facet>
<rich:panel id="panelCadastroUsuario">
<h:form id="formCadastroUsuario">
<table cellpadding="5" cellspacing="0" border="0">
<tr>
<td>
<h:outputText value="Nome:"/>
</td>
<td>
<h:inputText value="#{userFaces.user.vchUserFirstname}" id="firstname">
<f:validator validatorId="FirstnameValidator"/>
</h:inputText>
</td>
</tr>
<tr>
<td>
<h:outputText value="Sobrenome:"/>
</td>
<td>
<h:inputText value="#{userFaces.user.vchUserLastname}" id="lastname"/>
</td>
</tr>
<tr>
<td>
<h:outputText value="Login:"/>
</td>
<td>
<h:inputText value="#{userFaces.user.vchUserLogin}" id="login"/>
</td>
</tr>
<tr>
<td>
<h:outputText value="Senha:"/>
</td>
<td>
<h:inputText value="#{userFaces.user.vchUserPassword}" id="senha"/>
</td>
</tr>
<tr>
<td>
<h:outputText value="Confirmar Senha:"/>
</td>
<td>
<h:inputText value="#{userFaces.password}" id="retypesenha"/>
</td>
</tr>
<tr>
<td colspan="2">
<a4j:outputPanel ajaxRendered="true">
<h:messages id="messageCadastroUsuario"/>
</a4j:outputPanel>
</td>
</tr>
<tr>
<td>
<a4j:commandButton value="Cadastrar" action="#{userFaces.createUser}" oncomplete="closeCadastroUsuario()"/>
</td>
<td>
<a4j:commandButton value="Limpar" action="#{userFaces.limpar}" reRender="panelCadastroUsuario"/>
<a4j:commandButton value="Sair" action="#{userFaces.limpar}" oncomplete="#{rich:component('modalPanelCadastroUsuario')}.hide()" reRender="panelLogin"/>
</td>
</tr>
</table>
</h:form>
</rich:panel>
</rich:modalPanel>
<%-- Fim do modalPanelCadastroUsuario --%>
Agora meu JavaScript que valida o h:messages está da Seguinte Forma:
function closeCadastroUsuario() {
if(document.getElementById("formCadastroUsuario:messageCadastroUsuario") == null) {
RichFaces.hideModalPanel('modalPanelCadastroUsuario');
}
}
No Código eu só estou tentando validar o campo Nome para validar o resto. Meu FirstnameValidator está abaixo.
public class FirstnameValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String nome = value.toString();
if (nome.equals("")) {
FacesMessage msg = new FacesMessage();
msg.setDetail("Campo Nome está em Branco! Prencha o Campo Nome!");
msg.setSummary("Campo Nome está em Branco! Prencha o Campo Nome!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
O faces-config.xml está com o validator Firstname Declarado, e acredito que a função do action (que não tem nada) está executando, porém o javascript e o validator não. Quando eu coloco a tag required=“true” dentro o h:inputText id=“firstname” ele mostra o erro no h:messages.
Fico no aguardo e agradeço desde já!