Domanda

Devo sovrascrivere i messaggi di conversione predefiniti, quindi sto cercando di creare un intercettore di errore di conversione personalizzato per la mia applicazione che verrebbe chiamato al posto di Struts Default Interceptor di seguito menzionato è il codice per questo

public class MyConversionErrorInterceptor extends ConversionErrorInterceptor {

private static final long serialVersionUID = 1L;

protected Object getOverrideExpr(ActionInvocation invocation, Object value) {
    ValueStack stack = invocation.getStack();
    return (String)stack.findValue("myproj.item");
}
protected boolean shouldAddError(String propertyName, Object value) {

    return true;
}}

Ecco la configurazione Struts.xml menzionata.

<interceptors >

<interceptor name="conversionError" class="com.celtic.cmvs.webapp.interceptor.MyConversionErrorInterceptor" />

<interceptor-stack name="myDefaultStack">
    <interceptor-ref name="conversionError" />
    <interceptor-ref name="defaultStack"/>
</interceptor-stack>

Ma non funziona. Grazie in anticipo

È stato utile?

Soluzione

Vedo alcune possibilità.

  1. L'intercettore di conversionerror Struts2 verrà ancora chiamato. Se vuoi il tuo invece di quello standard, devi definire l'intero stack da solo, con il tuo intercettore al posto di quello standard.
  2. Potresti voler cambiare il nome configurato dell'interceptor personalizzato in modo che non sia lo stesso di quello standard. In caso contrario, l'interceptor-ref name = "conversionerror" potrebbe ancora indicare l'interceptor standard.
  3. Devi assicurarti che il tuo nuovo stack venga utilizzato. Puoi farlo dichiarandolo come stack predefinito o facendo riferimento allo stack personalizzato all'interno di un'azione specifica.

Ho un tutorial sugli intercettori personalizzati nel mio blog che può essere utile: http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

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