4

String静的パラメーターの配列を渡すことができるような方法でアクションを宣言したかったのです。以下のコードを試しました:

<action name="saveRecord" class="saveRecordAction">
        <result name="success" type="tiles">tiles:saveRecordSuccess</result>
        <param name="names">name1</param>
        <param name="names">name2</param>
        <param name="names">name3</param>
    </action>

アクションクラスにセッターがあります:

public void setNames(String[] name){
    mNames = name;
}

しかし、私は最後の名前である 1 つの名前しか受け取っていません。"name3"

私が望んでいたことは可能ですか?はいの場合、それを行う正しい方法は何ですか?

4

5 に答える 5

3

struts static パラメータは MAP のように機能します。name は KEY で、value は VALUE です。値をコンマで区切って送信することで要件を達成でき、それを分割してそこに配列を配置できます。

<param name="names">name1,name2,name3</param>

静的パラメータの詳細については

于 2013-01-23T07:39:43.923 に答える
1

私の知る限り、静的パラメーターは文字列に変換されるため、さまざまなインターセプター (例: FileUploadInterceptor) が静的メソッドcommaDelimitedStringToSetを使用TextParseUtilして に変換StringSet<String>ます。プロパティのセッター内でこのメソッドを呼び出すことができます。

public void setNames(String name) {
    mNames = TextParseUtil.commaDelimitedStringToSet(name);
}
于 2013-01-23T12:14:17.330 に答える
0

パラメーターが として定義されているアクション構成を介してstaticParamsインターセプターによって処理される静的パラメーターMap<String,String>

アクション構成で静的パラメーターを適切に使用するには、インターセプターへの参照を含めるstaticParamsか、defaultStack.

<interceptor-ref name="staticParams">
      <param name="parse">true</param>
      <param name="overwrite">false</param>    
</interceptor-ref>

setParams(Map<String,String> params)インターセプターへのアクションにパラメーターの値を設定することも含めました。ケースに応じて異なるキーname1, name2, name3を使用して、マップの値を取得します。静的パラメーターのプロパティ (文書化されていません) を試しoverwriteて、同じキーで値を上書きしないようにすることもできます。

アクション構成で静的パラメーターを使用する例を見ることができます:アクション クラスの静的パラメーターを構成します。

于 2013-01-23T11:23:52.120 に答える
0

名前の代わりに名前[]を試してください

 <action name="saveRecord" class="saveRecordAction">
            <result name="success" type="tiles">tiles:saveRecordSuccess</result>
            <param name="names[]">name1</param>
            <param name="names[]">name2</param>
            <param name="names[]">name3</param>
        </action>
于 2013-08-05T12:11:37.070 に答える
0

これを試して

    <action name="saveRecord" class="saveRecordAction">
            <result name="success" type="tiles">tiles:saveRecordSuccess</result>
            <param name="names" value="new java.lang.String[]{'name1', 'name2', 'name3'}"></param>

</action>
于 2013-01-23T07:42:05.060 に答える