5

私は現在取り組んでSpring 3.1.2 (webflow version 2.3.1)おり、古い問題に再び直面しています。問題は、Spring Webflow を介して新しいオブジェクトを作成することです。だから私がやりたいことは次のとおりです:

<set name="myBean.foo" value="new Bar()"

色々と調べてみたのですが、仕方がないことがわかりました。同じ問題に直面している今、私が知らないこの問題のための新しい機能や、好ましい代替手段があるのではないかと考えています。以前は、これに static factory を使用していました。

Alan J Liu の回答に加えて、特定の遷移が行われるたびに (または特定のビューに入るたびに)、オブジェクトを開始する必要があります。

PS : springsourceは、ここで私の質問に完全には答えませんでした。前もって感謝します!

4

3 に答える 3

4

'value' 属性は SpEL ( http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html ) を受け入れるため、'new' 演算子を使用できます。完全修飾クラス名。最後に、新しく作成されたオブジェクトはデフォルトでフロースコープにありますが、目的のスコープを明示的に指定できます。これは私にとってはうまくいきます:

<view-state id="searchScreen" view="/WEB-INF/jsp/query.view.jsp">
    <on-entry>
        <set name="flashScope.test" value="new java.util.Date()"/>
    </on-entry>
    <transition on="..." to="...">
        <evaluate expression="..."/>
    </transition>
</view-state>
于 2012-10-18T15:13:06.840 に答える
1

以下を使用できます。

<var name="object1" class="my.package.Object" />
<set name="objectHolder.object" value="object1" />

1 行目はコンストラクターを介して新しいオブジェクトを作成し、2 行目はそれを objectHolder クラスの変数オブジェクトとして (setter を介して) 設定します。

また:

<set name="objectHolder.object" value="objectFactory.createObject()" />

場所: public Object createObject{ return new Object() }

于 2012-10-17T13:18:08.120 に答える
0

オブジェクト用の Java ファクトリを作成することをお勧めします。次のようなオブジェクトを作成できますが、

<on-entry>
        <set name="flashScope.test" value="new java.util.Date()"/>
</on-entry>

オブジェクトを使用する場合、リファクタリングに問題があります。オブジェクトを移動/名前変更すると、XML が壊れます。代わりに、次のようなファクトリを作成します。

@Component("webflowBeanFactory")
public class WebflowBeanFactory {    
    public static YourObject yourObjectBean(Object argument) {
        return new YourObject(argument);
    }
}

そして、次のように webflow から呼び出します。

<on-entry>
        <set name="flashScope.yourObject" value="webflowBeanFactory.yourObjectBean(anyVariable)"/>
</on-entry>
于 2015-06-22T14:26:36.967 に答える