Domanda

Sto cercando di fare una pagina di login in Struts. L'idea è quella di convalidare se l'utente esiste, ecc, e poi se c'è un errore, tornare alla pagina di login con gli errori in rosso (il tipico d'accesso o di qualsiasi pagina del modulo di validazione).

Vorrei sapere se qualcuno conosce un tutorial gestione errori in Struts. Sto cercando appositamente per un tutorial (o esempio) del

<html:errors>

tag, che penso avrebbe risolto il mio problema.

È stato utile?

Soluzione

Ecco un breve riassunto. Hai una classe ActionForm, dici MyForm:

<form-bean name="myForm" type="myapp.forms.MyForm"/>

Hai una classe Action, dire MyAction:

<action path="/insert" type="myapp.actions.MyAction" name="myForm"
   input="/insert.jsp" validate="true" />
  <forward name="success" path="/insertDone.jsp"/>
</action>

"nome" nell'azione fa riferimento al "nome" nella forma di soia. Perché hai validate="true" la classe ActionForm MyForm deve definire il metodo validate() che verrà automaticamente chiamata:

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 restituisce un ActionErrors vuote oggetto, Struts continua a chiamare il MyAction.execute (). In caso contrario, Struts mostra /insert.jsp (perché questo è l'input = parm hai dato) e si espande il tag html.errors per visualizzare i vostri errori da ActionErrors.

Altri suggerimenti

Eccone uno: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

Qui sto assumendo Struts 1. Non so se è cambiato per Struts 2.

Si può mettere un errors.header e errors.footer nel file risorse del messaggio:

errors.header=<h3><font color="red">Errors:</font></h3><ul>
errors.footer=</ul>

L'intestazione e piè di pagina vengono visualizzati solo se le ActionErrors oggetto ha eventuali errori in esso.

Nella classe Azione, fare questo:

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
}

Poi, prima di tornare:

saveErrors(request, errors);

Nel file messaggi risorsa:

error.bad.input=<li>Bad input:  '{0}' is invalid.</li>

Ora, quando il tag <html:errors/> viene elaborato, si trasformerà in:

<h3><font color="red">Errors:</font></h3><ul>
<li>Bad input: 'xxyyzzz' is invalid.<li>
</ul>

In azione montanti:

ActionErrors errors = new ActionErrors();
errors.add("", new ActionMessage("login.msg.err"));
saveErrors(request, errors);

Il "hello.msg.err" è definire in MessageBundle.properties

login.msg.err=Wrong user name or password

In te JSP, l'errore verrà mostrato dalle h: errori di tag:

<h:errors/>

Questo video mostra passo per passo e si spiegano tutte quelle cose: https://youtu.be/YcCsJtqI72A

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top