2011-03-30 34 views
2

我正在使用Spring WebFlow和Spring MVC。当我请求页面例如http://localhost:8080/testapp/index.html?param=100 WebFlow使重定向到http://localhost:8080/testapp/index.html?execution=e3s1并且不能得到param在jsp中,param丢失某处。如何得到这个工作?Spring WebFlow:如何在JSP中获取请求参数?

这种情况另一个例子 - 春季安全配置如下图所示:

<security:form-login authentication-failure-url="/login.html?loginfail=1" login-page="/login.html" /> 

当用户登录失败,我不能在login.jsp得到loginfail参数。

<c:if test="${!empty param.loginfail}">Login error!</c:if> 

我可以访问请求参数流量,但是...我必须设置视图/ flowScope变量为我所有的请求参数象下面这样?

<set name="viewScope.loginfail" value="requestParameters.loginfail" /> 

回答

5

要获得关于访问Spring WebFlow(SWF)和请求参数通用的问题:

收到您的第一个请求(包括请求参数)后,春天的Webflow正在发送您的浏览器302重定向这迫使另一个GET。此GET请求不包含您的原始请求参数。就像您指出的那样,您可以使用流逻辑中的requestParameters映射来访问这些参数。然后,您可以在viewScope或requestScope上设置请求参数,但您应该问自己为什么需要在JSP中获取这些请求参数。

您在视图层(JSP)中执行的逻辑是否真的应该在控制器层(Web流)中执行?你是否需要绑定到模型对象(在视图状态下使用模型属性)?

如果您只处理一个参数,那么您可以将其设置在视图或请求范围内。但是如果你有几个,也许你需要一个你可以用作模型属性的命令对象。 SWF将处理绑定到此对象的参数,并将此对象公开给您重定向到的视图。

更具体地说,对于春季安全/登录:

看来,你可能会想实现你的登录页面,作为一个实际的Webflow ...我会看看的SWF文件,它有一个关于确保Web流程的简短章节。登录页面/进程不会被定义为流程中的状态。

+0

感谢您的全面回答 – marioosh 2011-06-19 07:23:36

0

您可以添加ie。

<?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 name="param" required="true" /> 

    <on-start> 
     <evaluate expression="someAction.getSomething(param)" result="conversationScope.myParam"/> 
    </on-start> 
    ... 

您的流程。

相关问题