0

JSP に転送するアクションを使用する典型的なセットアップがある場合、次のようにプロパティを要求します。

<s:property value="myVariable" />

ここで、myVariable はアクション内の変数です。

別のページで次のようなアクション タグを使用したい:

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param>
</s:action>

myVariable上記のようなアクションタグを使用する場合、どのようにアクセスすればよいですか? 試し<s:property value="myVariable" />ましたが、うまくいきません。

4

1 に答える 1

4

を記述する<s:property value="myVariable" />と、Struts は myVariableその「値スタック」でプロパティを探します。現在のアクションは ValueStack にあるため、通常のセットアップが機能します。さて、の場合、

<s:action name="actionName" executeResult="false"> 
    <s:param name="switch">true</s:param>
</s:action>
<s:property value="myVariable" />

最後の行が実行されると、actionNameアクションはすでに実行されています。現在のアクションはそれではなく、メイン (「外側」) のアクションです。「内部」アクションのプロパティにアクセスしたい場合は、いくつかの選択肢があり、そのうちの 2 つがdocsに示されています。

var実行された (内部) アクションが変数に割り当てられるように属性を追加し、それを# 構文で参照します。

<s:action name="actionName" var="innerAction" executeResult="false">
   <s:param name="switch">true</s:param>
</s:action>
<s:property value="#innerAction.myVariable" />

または、アクション メソッドで、プロパティ値を明示的にスコープに追加します (例: 属性)。

// in your inner action: 
ServletActionContext.getRequest().setAttribute("myVariable", "blah blah");

<s:property value="#attr.myVariable" />

免責事項:私はこれをテストしていません

于 2012-08-27T21:51:06.423 に答える