在Spring WebFlow中转发请求

时间:2013-08-26 13:54:01

标签: java spring spring-webflow

目前我的应用程序逻辑正在使用请求参数来执行逻辑。在我的新要求中,我还可以获得一个只有db键(db将具有值)作为请求参数的请求。我可以从数据库中获取数据,但现在的问题是我现有的逻辑/流程不能正常工作,因为它需要参数映射中的数据。

在spring-mvc中我可以再次转发请求并将参数附加到请求

@Controller
public class TestController {
    @RequestMapping(value="/test")
    public String showTestPage() {
        return "forward:/test2?param1=foo&param2=bar";
    }
}

@Controller
public class TestController2 {
    @RequestMapping(value="/test2")
    public String showTestPage(HttpServletRequest request) {
        String param1 = request.getParameter("param1");
        String param2 = request.getParameter("param2");
        return "testPageView";
    }
}

但是在spring-webflow中,我不确定如何复制相同的行为,因为它适用于状态而不是请求映射。任何人都可以告诉我,如果在添加参数后有一种方法可以在spring-webflow中转发。

2 个答案:

答案 0 :(得分:1)

<强>更新

抱歉,我的问题出错了。

在WebFlow中,您有view-states转换到下一个状态。如果您想传输参数,可以这样做:

flow.xml:

<view-state id="test" view="test.jsp>
    <transition on="toTest2" to="test2" />
</view-state>

<view-state id="test2" view="test2.jsp>
    <on-render>
        <evaluate expression="test2Delegate.doSomething(requestParameters.param2, requestParameters.param2)" 
    </on-render>
</view-state>

test.jsp的:

<a href="${flowExecutionUrl}&_eventId=toTest2&param1=foo&param2=bar" />

爪哇:

@Component
public class Test2Delegate {

    public void doSomething(String param1, String param2) {

        //doSomething
    }
}

我建议您阅读Spring Web Flow Reference Guide

答案 1 :(得分:0)

在flow xml中添加:

<view-state id="viewname" view="flowRedirect:appName?#{flowScope.jobId}

因此,当您转换到此视图状态时,它会将URL重定向回服务器并返回您想要的请求参数。但是这会再次访问网络,然后是服务器,我希望请求仅停留在服务器端