3

これを説明するのは少し難しいでしょう。多数の住所フィールドをコンポーネント化するタグを作成しようとしていますが、ognl 式をうまく処理できません。

予想される使用法:

member.address は Address オブジェクトにマップされます (切り抜きすぎではありません)。

私のタグ(最も単純なバージョン):

<%@taglib prefix="s" uri="/struts-tags" %>
<%@attribute name="name" required="true" rtexprvalue="true" type="java.lang.String" %>
<s:push value="%{#attr.name}">
    Address line 1:
    <s:property value="line1"/>
</s:push>

問題は、<s:push value="%{#attr.name}"/>実際には member.address の結果をスタックにプッシュしているのではなく、代わりに値「member.address」の文字列をプッシュしているだけだと思います。

4

1 に答える 1

4

もう少し調査し、ognl のドキュメントを長時間見つめると、次の結果が得られます。

<%@taglib prefix="s" uri="/struts-tags" %>
<%@attribute name="name" required="true" rtexprvalue="true" type="java.lang.String" %>
<s:push value="%{(#attr.name)(#attr)}">
   Address line 1:
   <s:property value="line1"/>
</s:push>

トリックを行うようです。

于 2009-05-12T16:18:08.780 に答える