2

私はSpring Web Flowから始めて、ドキュメントを読んでフォローしています。新しいフローを作成しました:

test-flow.xml

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/webflow
        http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <var name="testName" class="com.project.TestView" />

    <view-state id="test">
        <on-entry>
            <set name="flowScope.name" value="testName.name" />
        </on-entry>
        <transition on="test" to="saveName"/>
    </view-state>

    <subflow-state id="subTest" subflow="testSub-flow">
        <input name="nameVar" value="name" />
        <transition to="error" />
    </subflow-state>

    <view-state id="error" />
    <end-state id="finish" />   
</flow>

そして、testSub-flow.xmlを作成しようとしています

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
        http://www.springframework.org/schema/webflow
        http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input type="String" name="nameVar" />

    <on-start>
        <evaluate expression="com.project.TestView.printSomething(nameVar)" result="flowScope.testPrint" />
    </on-start>

    <view-state id="printTest" >
        <transition on="restart" to="endSub" />
    </view-state>

    <end-state id="endSub" />

</flow>

呼び出されるメソッドは次のとおりです。

@Transactional(readOnly = true)
    public String printSomething(String text){
        System.out.print(text + " this is a test");
        return text + " this is a test";
    }

メインフローをロードしているときにブラウザで例外が発生します。test-flow.xml

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [AnnotatedAction@6ca837 targetAction = [EvaluateAction@7aed3a expression = com.project.TestView.printSomething(nameVar), resultExpression = flowScope.testPrint], attributes = map[[empty]]] in state 'null' of flow 'test' -- action execution attributes were 'map[[empty]]'

何が問題でしょうか?? 前もって感謝します。

4

1 に答える 1

1

一見、開始状態が見つからないようです。フロータグにstart-state属性を追加してみてください。

    <flow xmlns="http://www.springframework.org/schema/webflow"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/webflow
            http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd" 
            start-state="test">

それでも問題が解決しない場合は、フロービルダーが「saveName」という名前の状態を見つけられない可能性があります。問題は次の行にある可能性があります。

<transition on="test" to="saveName"/>

「test」イベントが発生したときにサブフローを呼び出す場合は、サブフローを呼び出すために「saveName」ではなく「subTest」と記述します。

したがって、その行は次のようになります。

<transition on="test" to="subTest"/>

また、これらのビューステートにはビューを指定していないことに注意してください。

お役に立てれば。

于 2012-06-06T15:02:59.727 に答える