Re:Struts (ActionErrors validate) Não Funciona!

Não duplique seus tópicos.

Mude esta linha no validate:

erros.add("nome", new ActionMessage("nome.erro"));

// Mudar para
erros.add("errors", new ActionMessage("nome.erro"));

[]'s

Coloque seu <html:errors/> antes da sua tag<html:form> , não se influencia mas …

Outra coisa como está seu struts-config.xml , vc setou o validate = true ?


&lt;action
             path="/LogonSubmit"
             type="app.LogonAction"
             name="logonForm"
             scope="request"
             validate="true"
             input="/logon.jsp" /&gt;
        &lt;action path="/logoff" type="app.LogoffAction" /&gt;

Caso o validate retorne false e ele redireciona para logon.jsp com a mensagem de erro

[quote=ramilani12]Coloque seu <html:errors/> antes da sua tag<html:form> , não se influencia mas …

Outra coisa como está seu struts-config.xml , vc setou o validate = true ?
[/quote]

Se não está apresentando as msgs de erro, ele está setando o validate=true.

Qto a usar o <html: errors/> antes do <html:form> não influencia até pq não tem relação com o form. Esta tag itera uma lista de Strings do escopo.

[]'s

Cara … se a forma que eu passei não funcionar, tente

errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.usuario.email"));

Um das 2 alternativas com certeza funcionará.

[]'s

[quote=everson_z][quote=marciobarroso]Cara … se a forma que eu passei não funcionar, tente

errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.usuario.email"));

Um das 2 alternativas com certeza funcionará.

[]'s[/quote]

De onde saiu esse error.usuario.email ???[/quote]

É só um exemplo…

[quote=marciobarroso][quote=ramilani12]Coloque seu <html:errors/> antes da sua tag<html:form> , não se influencia mas …

Outra coisa como está seu struts-config.xml , vc setou o validate = true ?
[/quote]

Se não está apresentando as msgs de erro, ele está setando o validate=true.

Qto a usar o <html: errors/> antes do <html:form> não influencia até pq não tem relação com o form. Esta tag itera uma lista de Strings do escopo.

[]'s[/quote]

Mas se ele marcar com validate false ai sim não será apresentado as mensagens de validação do formulário e o ActionForm não fará a validação

Quero saber como ele marcou o validate?

Vc definiu a tag input tbm?

Vc pode mudar sim
Mas vc precisa especificar no seu web.xml o novo caminho do arquivo Resources
O framework tratará da seguinte maneira:

:arrow: ele procurará por default no WEB-INF/classes
:arrow: no diretorio WEB-INF/classes/resources
:arrow: e ele pesquisará o pacote de mensagens(arquivo resources) em um arquivo default chamado: application.properties

Por compatibilidade mantenha seu arquivo Resources dentro do dir WEB-INF/classes/resources

Segue um exemplo no seu web-xml:
Vamos supor que seu arquivo se chama mensagens.properties

&lt;init-param&gt;
       &lt;param-name&gt;mensagens&lt;/param-name&gt;
      &lt;param-value&gt; resources.mensagens &lt;/param-value&gt;
&lt;/init-param&gt;

O param-value deve ser nome totalmente qualificado indicando até pacote e subpacote

Na tag <message-resources>
Vc adiciona o nome do parametro que definimos no <param-name>

&lt;message-resources parameter="resources.mensagens" /&gt;

Já fiz de tudo e nada… esta dando raiva
Quero ver o MessageResources.properties mostrar a msg de erro mas, nada.

Welcome.jsp [code]
<%@ taglib uri=“http://struts.apache.org/tags-bean” prefix=“bean” %>
<%@ taglib uri=“http://struts.apache.org/tags-html” prefix=“html” %>

html:html

<html:form action="acao.do">
	<html:text property="nome"/>
	<html:submit value="OK"/>
</html:form>
<html:errors/>
[/code]

Formulario [code]
public class Formulario extends ActionForm {

private String nome;
private String pass;

public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}

public ActionErrors validate(ActionMapping mapping, HttpServletRequest req, HttpServletResponse res)
						throws Exception{
	ActionErrors erros = new ActionErrors();
	if(nome == null || nome.equals("")){
		erros.add("nome", new ActionMessage("nome.erro"));
	}
	return erros;
}

}
[/code]

Acao [code]
public class Acao extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest req, HttpServletResponse res) throws Exception{

	Formulario formulario = (Formulario) form;
	
	System.out.println(formulario.getNome());
	req.setAttribute("objetoToRender", formulario.getNome());
	return mapping.findForward("retorna");
}

}
[/code]

MessageResources.properties welcome.title=Aplicação em Branco welcome.heading=Welcome! nome.erro=Verifique o campo nome!

Vlw

Não fiz isso… (token)

[quote=marciobarroso]Cara … se a forma que eu passei não funcionar, tente

errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.usuario.email"));

Um das 2 alternativas com certeza funcionará.

[]'s[/quote]

De onde saiu esse error.usuario.email ???

Esta sim… validate = true

Tb

    <action-mappings>
            <!-- Default "Welcome" action -->
            <!-- Forwards to Welcome.jsp -->
        <action
            path="/Welcome"
            forward="/pages/Welcome.jsp"/>
       <action
            path="/acao"
            name="formulario"
            scope="request"
            validate="true"
            input="/pages/Welcome.jsp"
            type="app.acao.Acao">
            <forward name="retorna" path="/pages/Welcome.jsp" />
       </action>
            
    </action-mappings>

Eu não posso trocar o MessageResources de lugar?
Tipo

<message-resources parameter="app.bundle.MessageResources" />

Deixei como padrão e passou a funcionar