struts tutorial ou exemplo
-
06-09-2019 - |
Pergunta
Eu estou tentando fazer uma página de login no Struts. A idéia é para validar se o usuário existe, etc, e, em seguida, se houver um erro, o retorno à página de login com os erros no vermelho (o login típico ou qualquer validação página de formulário).
Eu gostaria de saber se alguém sabe de um tutorial de gestão de erros no Struts. Eu estou olhando especialmente para um tutorial (ou exemplo) da
<html:errors>
tag, que eu acho que iria resolver o meu problema.
Solução
Aqui está um resumo rápido. Você tem uma classe ActionForm
, dizem MyForm
:
<form-bean name="myForm" type="myapp.forms.MyForm"/>
Você tem uma classe Action
, dizem MyAction
:
<action path="/insert" type="myapp.actions.MyAction" name="myForm"
input="/insert.jsp" validate="true" />
<forward name="success" path="/insertDone.jsp"/>
</action>
"nome" na ação refere-se ao "nome" na forma de feijão. Porque você tem validate="true"
sua classe ActionForm
MyForm
deve definir método validate()
que será automaticamente chamado:
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ((username==null) || (username.length() < 1))
errors.add("username", new ActionError("error.username.required"));
return errors;
}
Se ele retorna um objeto ActionErrors vazio, Struts passa a chamar seu MyAction.execute (). Caso contrário, Struts exibe /insert.jsp (porque essa é a entrada = PARM lhe deu) e expande a tag html.errors para exibir seus erros a partir ActionErrors.
Outras dicas
Aqui está um: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description
Aqui eu estou supondo Struts 1. Eu não sei se ele mudou para o Struts 2.
Você pode colocar um errors.header e errors.footer em seu arquivo de recursos de mensagens:
errors.header=<h3><font color="red">Errors:</font></h3><ul>
errors.footer=</ul>
O cabeçalho e rodapé são exibidos apenas se o objeto ActionErrors tem quaisquer erros nele.
Na sua classe de Acção, faça o seguinte:
ActionErrors errors = new ActionErrors();
if (badInput) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.bad.input", badString); // key in messages resource file
// badString will replace {0} in message
}
Em seguida, antes de retornar:
saveErrors(request, errors);
Em seu arquivo de recursos mensagens:
error.bad.input=<li>Bad input: '{0}' is invalid.</li>
Agora, quando o tag <html:errors/>
é processado, ele vai se transformar em:
<h3><font color="red">Errors:</font></h3><ul>
<li>Bad input: 'xxyyzzz' is invalid.<li>
</ul>
Em struts ação:
ActionErrors errors = new ActionErrors();
errors.add("", new ActionMessage("login.msg.err"));
saveErrors(request, errors);
O "hello.msg.err" é definir em MessageBundle.properties
login.msg.err=Wrong user name or password
Em você JSP, erro será mostrado por h: erros de tag:
<h:errors/>
Este vídeo mostra passo a passo e explicar-lhe todas essas coisas: https://youtu.be/YcCsJtqI72A