| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2005 13:07:14
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2005 13:34:22
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2005 14:17:43
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2005 16:57:23
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 09:15:07
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 09:19:06
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 09:35:04
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 09:39:24
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 11:35:09
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 11:37:23
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/07/2005 12:19:33
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
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 |
|
|
 |
|
|