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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top