JSF...Validation Error: Value is required

Olá pessoal,

uma duvida na pagina jsp quando não digito o campo login,senha ,e-mail

aparece a mensagem Validation Error: Value is required.

Como faço para configurar outra mensagem como Login Obrigatório…

E outra duvida quando cadastro um usuário volta para pagina login.jsp

e os campos ficam preenchidos como fazer para limpar os campos …

se alguém puder me ajudar agradeceria…

abs

–jsp

 Login  	  Validation Error: Value is required.
Senha 	Validation Error: Value is required.
E-mail 	Validation Error: Value is required.
Login 	E-mail 	Ação
Login 	E-mail 	Ação

–login.jsp

<f:view>

	<body>
		<h:form>			
			<table>
					<tr>
						<td>
							<h:outputText value="Login"/>
						</td>
						<td>
							<h:inputText id="login"  value="#{cadastro.login}" required="true"/>
							<h:message for="login"/>
						</td>
					</tr>
					<tr>
						<td>
							<h:outputText value="Senha"/>
						</td>
						<td>
							<h:inputSecret id="senha" value="#{cadastro.senha}" required="true"/> 
							<h:message for="senha"/>							
						</td>
					</tr>			
					<tr>
						<td>
							<h:outputText value="E-mail" />
						</td>
						<td>
							<h:inputText id="mail"  value="#{cadastro.mail}" required="true"/> 
							<h:message for="mail"/>							
						</td>
					</tr>			
					
				<tr>
					<td>
						<h:commandButton action="#{cadastro.incluir}" value="Enviar Dados"/> 
					</td>
				</tr>			
			</table>
		</h:form>	
		
		
	<h:form id="deletar">	
			
			<h:dataTable  value="#{cadastro.lista}" border="1" var="usuario">

				<h:column>
					<f:facet name="header">
						<h:outputText value="Login"/>
					</f:facet>
					<h:outputText value="#{usuario.login}"></h:outputText>
	
				<f:facet name="footer">
						<h:outputText value="Login"/>
					</f:facet>
					
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="E-mail"/>
					</f:facet>
					<h:outputText value="#{usuario.mail}"></h:outputText>
					<f:facet name="footer">
						<h:outputText value="E-mail"/>
					</f:facet>
				</h:column>
				<h:column>
					<f:facet name="header">
						<h:outputText value="Ação"/>
						
						
					</f:facet>
		
					
    <h:commandLink actionListener="#{cadastro.excluir}" >  
        <f:param id="codigo" name="codigo" value="#{usuario.id}"/> 
        <h:outputText value="Excluir"/> 
    </h:commandLink>  
					<f:facet name="footer">
						<h:outputText value="Ação"/>
					</f:facet>				
				</h:column>										
			</h:dataTable>
		</h:form>
			
	<body>
</f:view>
</html>

vê se isso ajuda: http://www.guj.com.br/posts/list/45552.java#239343

eu li a matéria e fiz o seguinte como está abaixo

mas continua exbindo a mensagem Validation Error: Value is required.


public String incluir() {		
		try {
			
			if (login==null) {			
				   FacesMessage message = new FacesMessage("Login Obrigatório");  
	               message.setSeverity(FacesMessage.SEVERITY_ERROR); 
	               FacesContext.getCurrentInstance().addMessage(null, message);
	               return"";  
			}else{
			
				    Connection cn = Conexao.obterConexao();
			        PreparedStatement statement = null;
				
					statement = cn.prepareStatement("insert into usuario (login,senha,mail) values  (?,?,?)");
					statement.setString(1,login);
					statement.setString(2,senha);
					statement.setString(3,mail);
					statement.executeUpdate();
					cn.close();
					return "sucesso";}
		} catch (SQLException e) {
			e.printStackTrace();
			return "falha";
		}		
	}
	

<h:form>			
			<table>
					<tr>
						<td>
							<h:outputText value="Login"/>
						</td>
						<td>
							<h:inputText id="login"  value="#{cadastro.login}" required="true"/>
							<h:message for="login"/>
						</td>
					</tr>
					<tr>

Cara, olha o tutorial que fiz:

http://www.renanmartins.com/?p=15

Ele usa o recurso de message do jsf e mostro como sobrescrever as padrões no próprio .jsp

Att,

Renan

teneti usar :


<td>
							<h:inputText id="login"  value="#{cadastro.login}" required="true" requiredmessage="Voce deve preencher o campo Login"/>
							<h:message style="color: red"  for="login">
						</td>

mas deu erro:

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /login.jsp(18,7) Attribute requiredmessage invalid for tag inputText according to TLD
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:986)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:726)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:726)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
	at org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	at org.apache.jasper.compiler.Validator.validate(Validator.java:1484)
	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)

Cara, faz assim:

<f:view>
            <h:form id="login">

            <h:message style="color: red;" showDetail="false" for="usuario" />
            <h:message style="color: red;" showDetail="false" for="senha" />

            Usuario: <h:inputText id="usuario" required="true" requiredMessage="Voce deve preencher o campo usuario"
            value="#{pessoaC.user.usuario}" /><br><br>

            Senha: <h:inputSecret id="senha" required="true" requiredMessage="Voce deve preencher o campo senha"
            value="#{pessoaC.user.senha}" /><br><br>

            <h:commandLink action="#{pessoaC.verificaLogin}" value="Entrar" />

            <h:messages />

            </h:form>
</f:view>

faça um message para cada inputText id antes, use requiredMessagem para sobrescrever a mensagem padrao e use messages após.

Falow!

Caro Renan,

me parece que esse parametro não funciona , de novo o erro

–jsp

&lt;%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %&gt;
&lt;%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %&gt;

&lt;%@page contentType="text/html"%&gt;
&lt;%@page pageEncoding="UTF-8"%&gt;

&lt;f:view&gt;

	&lt;body&gt;
		&lt;h:form id="frmInserirUsuario"&gt;	
		
		 &lt;h:message style="color: red;" showDetail="false" for="login" /&gt;  
                 &lt;h:message style="color: red;" showDetail="false" for="senha" /&gt;  		
			&lt;table&gt;
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="Login"/&gt;
						&lt;/td&gt;
						&lt;td&gt;
							
						&lt;h:inputText id="login" value="#{cadastro.login}" required="true" requiredMessage="Voce deve preencher o campo usuario" /&gt;
							
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="Senha"/&gt;
							
						&lt;/td&gt;
						&lt;td&gt;
							&lt;h:inputSecret id="senha" value="#{cadastro.senha}" required="true" requiredMessage="Voce deve preencher o campo senha" /&gt; 
						&lt;/td&gt;
					&lt;/tr&gt;			
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="E-mail" /&gt;
						&lt;/td&gt;
						&lt;td&gt;
							&lt;h:inputText id="mail"  value="#{cadastro.mail}" required="true"/&gt; 
							&lt;h:message for="mail"/&gt;							
						&lt;/td&gt;
					&lt;/tr&gt;			
					
				&lt;tr&gt;
					&lt;td&gt;
						&lt;h:commandButton action="#{cadastro.incluir}" value="Enviar Dados"/&gt; 
					&lt;/td&gt;
				&lt;/tr&gt;			
			&lt;/table&gt;
		&lt;/h:form&gt;	
		
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /login.jsp(22,6) Attribute requiredMessage invalid for tag inputText according to TLD
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
	org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:986)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:726)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:726)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	org.apache.jasper.compiler.Validator.validate(Validator.java:1484)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:686)
	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:656)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:54)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.

Você pode também traduzir as mensagens de erro.

Crie um arquivo chamado messages.properties com o conteúdo:

javax.faces.component.UIInput.REQUIRED=Campo obrigatório. javax.faces.validator.NOT_IN_RANGE=O valor deve ser entre {0} e {1}. javax.faces.validator.LengthValidator.MAXIMUM=O tamanho máximo do campo é {0}. javax.faces.validator.LengthValidator.MINIMUM=O tamanho mínimo do campo é {0}.

Isso é a tradução dos erros de validação. Coloquei apenas alguns, mas existem muitos.
No seu faces-config coloque o código

<application> <locale-config> <default-locale>pt_BR</default-locale> </locale-config> <message-bundle><nome_pacote_onde_esta_arquivo_acima>.messages</message-bundle> </application>

Aí quando der um erro de campo requerido vai aparecer a mensagem: “Campo obrigatório.”

Espero ter ajudado.

O parametro funciona sim, voce que nao fez da forma como eu disse… use <h:message> antes dos inputs, depois de tudo, antes do </h:form> use:

<h:messages /> !!! Apenas siga meu exemplo

Att,

Renan

Caro Renan,

mais uma vez deu o mesmo erro …

poderi ame informar onde está errado pois estou fazendo conforme me disse…

abs

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /login.jsp(25,6) Attribute requiredMessage invalid for tag inputText according to TLD
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
	org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:986)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:726)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
&lt;%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %&gt;
&lt;%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %&gt;

&lt;%@page contentType="text/html"%&gt;
&lt;%@page pageEncoding="UTF-8"%&gt;
&lt;html&gt;
  
&lt;f:view&gt;

	&lt;body&gt;
		 &lt;h:message style="color: red;" showDetail="false" for="login" /&gt;  
         &lt;h:message style="color: red;" showDetail="false" for="senha" /&gt;  		

		&lt;h:form id="frmInserirUsuario"&gt;	
		

			&lt;table&gt;
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="Login"/&gt;
						&lt;/td&gt;
						&lt;td&gt;
							
							
						&lt;h:inputText id="login" value="#{cadastro.login}" required="true" requiredMessage="Voce deve preencher o campo usuario"  /&gt;
							
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="Senha"/&gt;
							
						&lt;/td&gt;
						&lt;td&gt;
							&lt;h:inputSecret id="senha" value="#{cadastro.senha}"  /&gt; 
						&lt;/td&gt;
					&lt;/tr&gt;			
					&lt;tr&gt;
						&lt;td&gt;
							&lt;h:outputText value="E-mail" /&gt;
						&lt;/td&gt;
						&lt;td&gt;
							&lt;h:inputText id="mail"  value="#{cadastro.mail}" required="true"/&gt; 
							&lt;h:message for="mail"/&gt;							
						&lt;/td&gt;
					&lt;/tr&gt;			
					
				&lt;tr&gt;
					&lt;td&gt;
						&lt;h:commandButton action="#{cadastro.incluir}" value="Enviar Dados"/&gt; 
					&lt;/td&gt;
				&lt;/tr&gt;			
			&lt;/table&gt;
		&lt;/h:form&gt;	

Caro Renan,

fiz igual ao seu exemplo acima e o que aconteceu …so substitui o mb

abs

&lt;%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %&gt;
&lt;%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %&gt;

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
    &lt;f:view&gt;  
                &lt;h:form id="login"&gt;  
      
                &lt;h:message style="color: red;" showDetail="false" for="login" /&gt;  
                &lt;h:message style="color: red;" showDetail="false" for="senha" /&gt;  
      
                Usuario: &lt;h:inputText id="usuario" required="true" requiredMessage="Voce deve preencher o campo usuario"  
                value="#{cadastro.login}" /&gt;<br><br>  
      
               Senha: &lt;h:inputSecret id="senha" required="true" requiredMessage="Voce deve preencher o campo senha"  
               value="#{cadastro.senha}" /&gt;<br><br>  
     
               &lt;h:commandLink action="#{cadastro.incluir}" value="Entrar" /&gt;  
     
               &lt;h:messages /&gt;  
     
               &lt;/h:form&gt;  
   &lt;/f:view&gt;  
Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: /login1.jsp(13,25) Attribute requiredMessage invalid for tag inputText according to TLD
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
	org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:986)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)

o requiredMessage, validatorMessage, converterMessage só estão disponivel aos componentes na especificação 1.2 do JSF

Caro Mark_Ameba ,

resolvido estou usando a versão 1.1

obrigado a todos…valeu …

[quote=paribe]Caro Renan,

fiz igual ao seu exemplo acima e o que aconteceu …so substitui o mb

abs

&lt;%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %&gt;
&lt;%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %&gt;

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
    &lt;f:view&gt;  
                &lt;h:form id="login"&gt;  
      
                &lt;h:message style="color: red;" showDetail="false" for="login" /&gt;  
                &lt;h:message style="color: red;" showDetail="false" for="senha" /&gt;  
      
                Usuario: &lt;h:inputText id="usuario" required="true" requiredMessage="Voce deve preencher o campo usuario"  
                value="#{cadastro.login}" /&gt;<br><br>  
      
               Senha: &lt;h:inputSecret id="senha" required="true" requiredMessage="Voce deve preencher o campo senha"  
               value="#{cadastro.senha}" /&gt;<br><br>  
     
               &lt;h:commandLink action="#{cadastro.incluir}" value="Entrar" /&gt;  
     
               &lt;h:messages /&gt;  
     
               &lt;/h:form&gt;  
   &lt;/f:view&gt;  

[code]
Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /login1.jsp(13,25) Attribute requiredMessage invalid for tag inputText according to TLD
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:986)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)

[/code][/quote]

mesmo com a versao 1.2 ia dar erro esse seu codigo. O certo seria:

&lt;h:message style="color:red;"  showDetail="false" for="usuario" /&gt;

e nao for = “login” …

Att,

Renan