使用Button eventid将Spring Webflow过渡到下一个状态

时间:2014-05-19 07:24:14

标签: java spring jsp spring-webflow-2

我有一个主流,它是index.jsp的链接,index.jsp是链接到子流的测试应用程序的入口点。主流是main-flow.xml,并使用class =“org.springframework.webflow.mvc.servlet.FlowController”映射到bean声明中的main.htm。

在主流程视图中有链接                     Systeme suchen

链接到子流。

在子流程中我有这个:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ns0="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="Search">


    <view-state id="Search" view="/Search" >
        <transition on="proceed" to="temp" />
        <transition on="cancel" to="SubEnd" />
    </view-state>

    <view-state id="temp" view="/End" />


    <view-state id="SubEnde" view="/Start" />

</flow>

搜索视图现在不包含任何逻辑,只包含链接和按钮。 End.jsp的JSP只包含一些传说中的ipsum静态内容,而Start与主流使用的视图相同。

Search.jsp链接和按钮:

这有效:

<a href="main.htm?_flowExecutionKey=${flowExecutionKey}&_eventId=proceed">
                    <span>Proceed Link</span></a>

这不会,只显示“描述所请求的资源不可用”。网站:

<a href="${flowExecutionKey}&_eventId=proceed">
                    <span>Proceed Link 2</span></a>     
<a href=_eventId=proceed">
                <span>Proceed Link 3</span></a>

按钮只是没有做任何事情:

<input type="submit" value="Proceeding" name="_eventId_proceed" id="eventId_proceedButton1">

这里出了什么问题?我在互联网上看到了许多这样的按钮示例。我错过了按钮的配置或什么?

2 个答案:

答案 0 :(得分:0)

如果您使用的是按钮,则需要通过jquery或javascript来完成。点击按钮时的操作如下:

document.getElementById('<yourFormName>').action = '${flowExecutionUrl}&_eventId=<yourEventID>';

document.getElementById('<yourFormName>').submit();

这可能会对你有帮助。

答案 1 :(得分:0)

你应该添加隐藏字段来保存SnapShot变量(意味着localhost:8080 / yourappcontext / yourpage?execution = e1s1 )。在上面的网址 e1s1 是SnapShot变量的值。所以在你的情况下:

<input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
<input type="submit" value="Proceeding" name="_eventId_proceed"/>

但两个标签都应保留在表格标签中。