Pessoal, estou com uma dúvida, como valido meus campos no formulário Dyna ?
Usando o DynaValidatorForm, vc pode chamar o form.validate() no seu execute
Como usa-lo ?
Capturei os dados assim:
DynaActionForm loginForm = (DynaActionForm) form;
String username = loginForm.getString(“username”);
String userpassword = loginForm.getString(“userpassword”);
Como posso validar se o usuário estiver vazio ?
Calmae, calmae…
Se vc quer validar dentro do proprio Action, vc pode usar uma validação comum… tipo if("".equals(usuario) then…
Mexendo com o ActionMessages para o retorno dos erros…
Aconselho a usar a validação do Validator, em xml, usar um DynaValidatorForm e chamar o form.validator…
Rodrigo, entendo o que disse, mas como posso fazer,
o método validate() retorna um ActionError
Como posso fazer validar cada campo, por exemplo não posso fazer isso:
form.Validator(get.String(“username”);
Como posso validar o campo ?
O método validate() do DynaActionForm não faz nada… ele retorna um ActionErrors nulo…
Se vc precisa validar no servidor seu form, [edited] utilizando forms dinamicos [/edited] vc precisa:
-
Ulitizar um DynaValidatorForm, criar o xml de validação e chamar o form.validate()
-
Validar 'na mão’o seu form dentro da sua action
Rodrigo, desculpa a ignorancia…
Mas ainda não entendo como validar o campo, estou entendendo o processo como um todo, o form inteiro, mas como validar e capturar um erro no campo username ?
Seguinte
Vc está usando um form dinamico, que nada mais é do que um Mapa (Map), onde os dados são armazenados mediante uma chave… Com isso, vc não tem um método validate, já que a validação sempre muda de form pra form. Portanto, se vc continuar utilizando o DynaActionForm, vc não vai conseguir uma validação automatica nele. Para isso, vc terá que, dentro do seu Action, no metodo execute, executar a validação na mão… exemplo
ActionErrors errors = new ActionErrors();
if("".equals(username)) errors.add(new ActionMessage(…));
if("".equals(password)) errors.add(new ActionMessage(…));
if(!errors.isEmpty()) {
super.saveErrors(errors, request);
return ERROR; //Retorna pra página de erro ou para a input
}
Diante desta deficiencia, inventaram o DynaValidatorForm, que lê um arquivo xml e valida este form de acordo com as regras descritas.
Para isso, vc precisa preparar sua aplicação para receber o Validator, da Apache, preparar o arquivo de validação e colocar o seguinte código.
DynaValitatorForm form = (DynaValitatorForm) actionForm;
form.validate();
Rodrigo, obrigado pelo texto, muito grato pela atenção !!!
Até agora perfeito, só mais uma dúvida, como farei o retorno das mensagens ?
Sempre depende… mas vamos lá…
Se vc utilizar o primeiro código, validando na mão, quando vc chamar o super.saveErrors(…), o controlador irá disponibilizar este objeto no request e a tag de logica de mensagens irá mostra-los…
Já na segunda maneira, isso será feito da mesma maneira… hehehe, mas automaticamente…
Rodrigo, no struts-config, no campo "type’
deverá conter qual valor ?
type="org.apache.struts.DynaActionForm">
type="org.apache.struts.validator.DynaValidatorForm">
<form-bean name=“loginDynaForm”
type=“org.apache.struts.validator.DynaActionForm”>
<form-property name=“username” type=“java.lang.String”/>
</form-bean>
</form-beans>
Rodrigo, pra finalizar hehehe
No jsp
<html:text property=“username” />
Devo usar a tag: <bean:message/> ou <html:error/> ?
Calma…
O html:text vc vai continuar usando… o bean:message é pra pegar as mensagens do resource… o html:errors é pra mostrar os erros… cada um com seu cada um…
Rodrigo, me ajuda brother
Quando executo o projeto ele já cai na mensagem…
Como faço para iniciar a página com os campos limpos ?
E como deverá ser o meu submit ?
Explique melhor…
Como?!?!? Se seu form não tiver um valor initial setado no xml ele deveria vir branco, a não ser que vc sete um valor inicial no html:text
Um botão submit acho que mataria a sua duvida… hehehe… brincadeira… vc deve setar a action no seu html:form para a action mapeada no struts-config
Rodrigo to te "enchendo né brother…rs mas é pra uma boa causa, lá vai…
Quando executo o projeto, cai na tela de login já com a mensagem
Usuário
*favor preencher o usuário
Aconteçe que a mensagem já está lá antes do submit, antes mesmo que eu preencha o usuário ele já traz a mensagem, acho que não está validando, oque posso verificar ?