[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Minha msg. de erro para o field não aparece.  XML
Forum Index -> Comentários Gerais
Author Message
Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Boa tarde!

Bom estou ainda tentando utilizar a msg. de erro para o field. Só que não aparece nada quando eu simulo o erro (field vazio). Quando eu utilizo a função addError(MEU_ERRO, MessageContext) ele funciona legal mas não para o field é claro.

Estou utilizando a ver. 1.0.1.

Segue o código:

Code:
 
 public String execute() throws ActionException {
                 String usuario = input.getStringValue("username");
 		String senha = input.getStringValue("senha");
 		if (usuario==null || usuario.trim().equals(""))
 		{
 			addError("username",USERNAME_BLANK);
 			return ERROR;
 		}
 		if (senha==null || senha.trim().equals(""))
 		{
 			addError("senha", PASS_BLANK);
 			return ERROR;
 		}
 		output.setValue("username",usuario);
 		output.setValue("senha",senha);
 		addError(MESSAGE,MSG_CONTEXT);
 		return SUCCESS;
 }
 


Um abraço!

Glaucio Guerra
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Vc está usando:

Code:
 <mtw:hasError>
 
 <h1><mtw:error field="username"/></h1>
 
 </mtw:hasError>
 
 


???

Sergio Oliveira

Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Realmente eu não tinha colocado a tag certa

Como estou fazendo todos os exemplos e o de Dynamic Messages já está funcionando, passei para a o próximo passo que é o VOFilter. Não entendi muito bem o tutorial. Parece ser simples de mais e não estou acreditando muito rs...

Pelo o que eu pude entender, eu preciso passar como parametro a classe do meu bean (no caso é User) para a função Action.addFilter. Depois de passar pelo filtro, a action é acionada. Na action eu pego o VO no input com o nome da classe (inclusive o pacote).

Até ai acredito que eu esteja certo. O problema é quando vou testar os valores do objeto. Quando eu pergunto se o objeto que eu recuperei do input é null ele passa direto. Mas quando eu tento recuperar os atributos do meu VO ele diz que estão nulos.

Alguma sugestão?




Code:
 package teste.menta.action;
 
 import org.mentawai.core.ActionException;
 import org.mentawai.core.BaseAction;
 import org.mentawai.message.ClassMessageContext;
 import org.mentawai.message.MessageContext;
 
 import teste.menta.beans.User;
 
 public class Hello extends BaseAction {
 	private static final MessageContext MSG_CONTEXT = new ClassMessageContext(Hello.class);
 	private static final int USERNAME_BLANK=1;
 	private static final int PASS_BLANK=2;
 	private static final int MESSAGE=3;
 	private static final int ERRO=4;
 	
 	public String execute() throws ActionException {
 			
 		User user = (User)input.getValue("teste.menta.beans.User");
 		if (user==null) 
 		{
 			//addError(ERRO, MSG_CONTEXT);
 			return ERROR;	
 		}
 		
 		if (user.getName()==null)
 			{
 			addError(USERNAME_BLANK,MSG_CONTEXT);
 			return ERROR;
 			}			
 		if (user.getPass()==null) 
 			{
 				addError(PASS_BLANK,MSG_CONTEXT);
 				return ERROR;
 			}
 		output.setValue("user",user);
 		addMessage(MESSAGE);
 		return SUCCESS;
 	}
 
 }

Glaucio Guerra
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Vc está fazendo alguma coisa errada. Pode ser:

Como está o nome do seu parametro Name por exemplo ??? Tem que ser name para chamar o método setName (ou a variável name se estiver injetando direto no atributo privado, sem setter)

Como vc está setando o VOFilter ??? Sabia que vc pode indicar no filtro o nome que vc quer que esse objeto tenha no input ? Assim:

Code:
 ac.addFilter(new VOFilter(User.class, "user"));
 


Me avise o que era !


Sergio Oliveira

Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Bom vou colocar o código do meu Bean:

Code:
 public class User {
 	private String name;
 	private String pass;	
 	
 	/**
 	 * @param name
 	 * @param pass
 	 */
 	public String getName() {
 		return name;
 	}
 	public void setName(String name) {
 		this.name = name;
 	}
 	public String getPass() {
 		return pass;
 	}
 	public void setPass(String pass) {
 		this.pass = pass;
 	}
 }
 


Acredito que não tenha nada de errado. Também utilizei o parametro no construtor do VOFilter para setar o nome do meu objeto. Até agora não funcionou...


Help!

Glaucio Guerra
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Como estão os parametros no formulário html ?

O VOFilter está testado e funciona muito bem. Vc está fazendo algo errado aí !!!

Sergio Oliveira

Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Com certeza é algo que estou errando. Eu testei o exemplo VOFilter.war e rodou redondo.

Segue minha jsp:

Code:
 <%@ taglib uri="WEB-INF/lib/mentawai.jar" prefix="mtw"%>
 <mtw:useI18N />
 <html>
 <body>
 	
 	<h1><mtw:i18n key="ola"/> Mentawai!</h1>
 	<form action="Hello.mtw" method="post">
 		<mtw:i18n key="nome"/> <input type="text" name="username" size="25"/><br></br>
 		<mtw:hasError>
 			<h5><font color="red"><mtw:error field="username"/></font></h5>>
 		</mtw:hasError>
 		<mtw:i18n key="senha"/><input type="password" name="senha" size="25"/><br>
 		<mtw:hasError>
 			 	<h5><font color="red"><mtw:error field="senha"/></font></h5>>>
 		</mtw:hasError>			
 		<input type="submit" value="Enviar"/>
 	</form>
 	
 </body>
 
 
 </html>
 

Glaucio Guerra
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

É o que eu suspeitei!

Os nomes dos seus parametros não batem com o do seu bean.

setUser requer user

setPass requesr pass

Entendeu ?

Mude de um lado ou do outro. O importante é que eles fiquem iguais.

Ex:

parametro casa vai procurar por setCasa

Abraço!

Sergio Oliveira

Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Olá Sergio,

Ainda não consegui...

Vou colocar todo o código alterado para você ver onde eu devo estar errando...

Minha Action

Code:
 public class Hello extends BaseAction {
 	private static final MessageContext MSG_CONTEXT = new ClassMessageContext(Hello.class);
 	private static final int USERNAME_BLANK=1;
 	private static final int PASS_BLANK=2;
 	private static final int MESSAGE=3;
 	private static final int ERRO=4;
 	
 	public String execute() throws ActionException {
 			
 		User user = (User)input.getValue("teste.menta.beans.User");
 		if (user==null) 
 		{
 			addError(ERRO, MSG_CONTEXT);
 			return ERROR;	
 		}
 		
 		if (user.getUsername()==null)
 			{
 			addError("username",USERNAME_BLANK,MSG_CONTEXT);
 			return ERROR;
 			}			
 		if (user.getPassword()==null) 
 			{
 				addError("password",PASS_BLANK,MSG_CONTEXT);
 				return ERROR;
 			}
 		output.setValue("user",user);
 		addMessage(MESSAGE);
 		return SUCCESS;
 	}
 
 }
 


Minha página onde eu digito o usuario e senha
Code:
 <%@ taglib uri="WEB-INF/lib/mentawai.jar" prefix="mtw"%>
 <mtw:useI18N />
 <html>
 <body>
 	
 	<h1><mtw:i18n key="ola"/> Mentawai!</h1>
 	<form action="Hello.mtw" method="post">
 		<mtw:i18n key="nome"/> <input type="text" name="username" size="25"/><br></br>
 		<mtw:hasError>
 			<h5><font color="red"><mtw:error field="username"/></font></h5>>
 		</mtw:hasError>
 		<mtw:i18n key="senha"/><input type="password" name="password" size="25"/><br>
 		<mtw:hasError>
 			 	<h5><font color="red"><mtw:error field="password"/></font></h5>>>
 		</mtw:hasError>			
 		<input type="submit" value="Enviar"/>
 	</form>
 	
 </body>
 
 
 </html>
 

Meu bean User

Code:
package teste.menta.beans;
 
 public class User {
 	
 	private String username;
 	private String password;
 	
 	public void setUsername(String username) {
 		this.username = username;
 	}
 	
 	public void setPassword(String password) {
 		this.password = password;
 	}
 	
 	public String getUsername() {
 		return username;
 	}
 	
 	public String getPassword() {
 		return password;
 	}
 }
 

Meu ApplicationManager

Code:
 public class AppManager extends ApplicationManager{
 	public void loadLocales() {
 		super.loadLocales();
 		
 		LocaleManager.add(new Locale ("pt","BR"));
 		LocaleManager.add(new Locale ("en","US"));
 	}
 	public void loadActions(){
 		ActionConfig ac = new ActionConfig ("/Hello",Hello.class);
 		ac.addConsequence(Hello.SUCCESS,new Forward ("/hello.jsp"));
 		ac.addConsequence(Hello.ERROR,new Forward ("/username.jsp"));
 		addActionConfig(ac);
 		ac.addFilter(new VOFilter(User.class,"user"));
 	}
 
 }
 
 


Um abraço!

Glaucio Guerra
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

No seu VOFilter vc colocou o key como user, mas está tentando pegar via o nome da classe: teste.menta.beans.User

Seu input deve estar retornando NULL.

Cheque isso...

Faça ao invés: getInput("user");


Sergio Oliveira

Glaucio


[Avatar]

Joined: 20/07/2005 08:22:57
Messages: 52
Offline

Olá Sergio!

Realmente eu alterei os parametros do VOFilter e esqueci de pegar o bean correto!

Agora funcionou!

Um abraço!

Glaucio Guerra
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team