0

デフォルトの変換メッセージをオーバーライドする必要があるので、strutsのデフォルトのインターセプターの代わりに呼び出されるアプリケーションのカスタム変換エラーインターセプターを作成しようとしています以下にそのコードを示します

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;
}}

上記のstruts.xml構成は次のとおりです。

<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>

しかし、それは機能しません。前もって感謝します

4

1 に答える 1

2

いくつかの可能性があります。

  1. struts2conversionErrorインターセプターは引き続き呼び出されます。標準の代わりに自分のものが必要な場合は、標準の代わりにインターセプターを使用して、スタック全体を自分で定義する必要があります。
  2. カスタムインターセプターの構成済みの名前を変更して、標準のインターセプターと同じにならないようにすることができます。それ以外の場合、interceptor-ref name="conversionError"は引き続き標準インターセプターを指している可能性があります。
  3. 新しいスタックが使用されていることを確認する必要があります。これを行うには、デフォルトスタックとして宣言するか、特定のアクション内でカスタムスタックを参照します。

ブログにカスタムインターセプターに関するチュートリアルがあります。http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

于 2011-02-11T15:27:23.027 に答える