2012-05-06 12 views
1

私はに尋問を行い、はXMLリクエストの前処理を行います。このインターセプタでは、XMLを解析し、処理された情報をValueStackに格納して、アクション内のインスタンスにマップできるようにします。しかし、私は非常に多くの方法を試しましたが、どれも仕事ではありません。誰も私を助け、私に助言を与えることができますか?ありがとう!

インターセプタで(Struts2)インターセプタからActionインスタンスに新しいパラメータを追加する方法はありますか?

// ValueStackを取得
するactionContext CTX = invocation.getInvocationContext();
マップctxMap = ctx.getValueStack()。getContext();

は//持っているが、次を試してみましたが、次のどれも仕事
ctxMap.get( "com.opensymphony.xwork2.ActionContext.parameters")ではない))、( "DATA1" を入れ "1"。 ( "data1"、 "1");
ctxMap.get( "parameters"))。 ( "request"))。put( "data1"、 "1"); ctxMap.get
ctx.getParameters()。put( "data1"、new String [] {"1"}); 。

//Sample Action Class 
public class TestAction extends ActionSupport { 
    private String data1; 
    public String execute() { 
     System.out.println("data1 value: " + data1); 
     return SUCCESS; 
    } 
//Get Setter is omitted here 
} 
+0

インターセプタを置く場所では、インターセプタを適切な場所に置くことができるように、作成したインターセプタスタックを提供することもできます。 – Quaternion

答えて

2

あなたが迎撃

ActionContext.getContext()getValueStack()内の値をスタックに処理された値を追加する必要がありますのsetValue( "DATA1" を、yourdata)。

インターセプター呼び出し時にアクションインスタンスが作成されている場合は、値を追加する必要があります。それが機能しない場合は、インターセプタスタックの順序に間違いがあります。インターセプタをスタックの最下部に置いて、残りの処理が終了し、アクションプロパティへのバインディングが必要に応じて動作することを保証してください。

関連する問題