gpt4 book ai didi

jsp - Spring WebFlow : How to get request parameters in JSP?

转载 作者:行者123 更新时间:2023-12-04 14:10:28 25 4
gpt4 key购买 nike

我将 Spring WebFlow 与 Spring MVC 结合使用。当我请求页面时 http://localhost:8080/testapp/index.html?param=100 WebFlow 重定向到 http://localhost:8080/testapp/index.html ?execution=e3s1 并且无法在 jsp 中获取 paramparam 丢失在某处。如何让它工作?

这种情况的另一个例子 - Spring Security 配置如下:

<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>

我可以访问流中的请求参数,但是...我是否必须像下面那样为我的所有请求参数设置 view/flowScope 变量?

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

最佳答案

回答有关 Spring WebFlow (SWF) 和请求参数的一般问题:

在收到您的第一个请求(包括请求参数)后,Spring WebFlow 将向您的浏览器发送一个 302 重定向,这会强制执行另一个 GET。此 GET 请求不包含您的原始请求参数。如您所述,您可以使用流程逻辑中的 requestParameters 映射访问这些参数。然后您可以在 viewScope 或 requestScope 上设置请求参数,但是您应该问问自己为什么需要在 JSP 中获取这些请求参数。

您在 View 层 (JSP) 中执行的逻辑是否真的应该在 Controller 层(网络流)中执行?您是否需要绑定(bind)到模型对象(在 View 状态上使用模型属性)?

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

更具体地说,关于 Spring Security/登录:

看来您可能正在尝试将您的登录页面实现为实际的网络流...我会看一下 SWF 文档,它有一个关于保护网络流的简短章节。登录页面/流程不会被定义为流程中的状态。

关于jsp - Spring WebFlow : How to get request parameters in JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484136/

25 4 0