【问题标题】:Forwarding a request in Spring WebFlow在 Spring WebFlow 中转发请求
【发布时间】:2013-09-09 16:08:42
【问题描述】:

目前我的应用程序逻辑正在使用请求参数来执行逻辑。在我的新要求中,我还可以获得一个只有 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中转发。

【问题讨论】:

  • 是变量 param1 和 2 null或者你的错误是什么?您此时没有使用 webflow!只是 spring-mvc
  • 我以他/她在 SpringMVC 中的做法为例,询问如何在 Web Flow 中做同样的事情?
  • @Philipp: dbreaux 是对的,我在询问用 SpringMVC 编写的代码的 webflow 等效项
  • 向我们展示您的流程 xml。
  • 找到解决方案了吗?让我们知道!

标签: java spring spring-webflow


【解决方案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" />

Java:

@Component
public class Test2Delegate {

    public void doSomething(String param1, String param2) {

        //doSomething
    }
}

我建议阅读Spring Web Flow Reference Guide

【讨论】:

  • 嗨,Philipp,正如上面评论中提到的,我编写的代码是在 Spring-MVC 中并且可以工作的。我想知道的是如何使用 spring-webflow 做同样的事情
  • 这仍然不能解决我的问题,因为我希望参数映射中存在值。基本上参数是不可变的。以你为例,我希望“param1”和“param2”在请求参数中可用。
  • 感谢 Philipp 这应该可以工作,但唯一的问题是我们将不得不再向用户显示一个虚拟页面,用户必须在该页面上单击一个按钮,或者即使我们在没有用户的情况下使用 js 单击按钮输入。但这将意味着另一个服务器命中。我希望不用再次访问浏览器就可以做到这一点。
  • 啊好吧!这也应该是可能的
【解决方案2】:

在流 xml 中添加:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2014-03-07
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多