Нет состояния просмотра в Spring WebFlow

Я использую springwebflow 2.0 в своем приложении.
Поскольку приложение растет, у меня большое количество веб-потоков. Теперь мне нужно создать отдельный веб-поток для определенного события, такого как «событие onchange выпадающих списков».
Для всех jsps в моем приложении по событию "onchange" я хочу, чтобы отдельный файл webFlow DomainFetcher-flow.xml запускался и возвращал некоторое значение.

So far my domainFetcher-flow.xml looks like 
<?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">
 <on-start>
     <evaluate expression="domainFetcher.fetchTableDomain()"    result="conversationScope.selectDataJSON"/>
 </on-start>

Right now I am getting an exception that at least one view state should be defined. So looking for a solution...


person Vivek Agrawal21    schedule 02.05.2014    source источник
comment
1) Опубликовать полную трассировку стека исключений. 2) Это полный файл определения потока?   -  person Prasad    schedule 02.05.2014
comment
ya Prasad это полный файл определения потока. Вопрос в том, можем ли мы объявить поток без каких-либо состояний просмотра?   -  person Vivek Agrawal21    schedule 05.05.2014


Ответы (1)


Да, вы можете определить подпоток без состояния просмотра. Например, у вас есть родительский поток ниже, который вызывает подпоток subflow-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">  
        ... 
        <subflow-state id="subflow-flow" subflow="subflow-flow">
            <transition on="endOfSubflow" to="someStateWithMessage"/>
        </subflow-state>
        ...
    </flow>

Затем в подпотоке вы можете выполнить какое-то действие. Вы можете определить subflow-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"
            start-state="start">            
        <action-state id="start">
            <evaluate expression="yourAction.performSomeAction(flowRequestContext)"/>
            <transition to="endOfSubflow"/>
        </action-state>
        ...
        <end-state id="endOfSubflow"/>
    </flow>

В вашем классе действий:

    public class YourAction{
    ...
    public void performSomeAction(RequestContext context){
        //do what you want in this method.

    }
    ...
    }

Надеюсь это поможет.

person Prasad    schedule 05.05.2014