- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
除非我想使用 EL 而不是 scriptlet .使用 ${-6ren">
简而言之,如何在 webflow View jsp 中使用 EL 获取完整的查询字符串?这就是我想要做的:
<span class="forgot-password">
<a href="forgotPasswordRequest?<%=request.getQueryString() %>">
<spring:message code="screen.welcome.link.forgotPassword" />
</a>
</span>
除非我想使用 EL 而不是 scriptlet <%=request.getQueryString() %>
.使用 ${param.someParameterName}
获取任何单个参数似乎很容易,但我想要整个东西。更具体地说,我正在使用 CAS作为 SSO 提供商。为了进行身份验证,应用程序会使用包含参数 service
的查询字符串将其登录重定向到 CAS。这是验证成功后要返回的 URL。像这样:
?service=http%3A%2F%2Fmysite.com%3A9080%2Fwelcome
我的 CAS 登录页面有一个忘记密码 webflow 的链接。我需要将该服务参数传播到其他 webflow。所以我可以做这样的事情:
<span class="forgot-password">
<a href="forgotPasswordRequest?service=${param.service}">
<spring:message code="screen.welcome.link.forgotPassword" />
</a>
</span>
但随后我丢失了所有 URL 转义。此外,如果将来我想保留其他参数,它们也会丢失。
该 scriptlet 目前有效,但它很丑陋,我不喜欢在我的演示文稿中使用代码(因为这是真正的 java 代码),即使它很琐碎。 EL 无疑是一个更优雅的解决方案。
我查看了 spring documentation 中列出的所有特殊 EL 变量 , 但仍然无法想出一种方法来获取完整的 queryString。
-------------------------------- 更新------------ ----------------------
好吧,所以我正在做一些基础...结果是 ExternalContext
接口(interface)有一个getNativeRequest()
这是实际的 HttpServletRequest
目的。从那里我可以得到完整的查询字符串:
externalContext.getNativeRequest().getQueryString()
所以现在我假设因为有一个名为 externalContext 的特殊 EL 变量,我会这样做:
${externalContext.nativeRequest.queryString}
对吧?错误的!结果是 externalContext
变量在 JSP 页面中不可用。有人知道为什么吗?但是,还有 flowRequestScope
,可用于 JSP 并且具有 getExternalContext
方法,所以现在我可以这样做:
${flowRequestScope.externalContext.nativeRequest.queryString}
太棒了,行得通...但是为什么有必要呢?为什么只有一些 特殊 EL 变量 被推送到 JSP 页面,为什么其中一些会发生变化( viewScope
似乎将其所有值都提升了一个级别到根,所以 viewScope.commandName在 JSP EL 中被引用为 ${commandName})?我一定是遗漏了 WebFlow 工作方式中的一些基本内容。有人可以指出我正确的方向吗?
最佳答案
在 webflow 中,范围映射本质上是为了便于区分服务器上的控制逻辑。在直接的 Spring MVC 中,那将是您的 Controller ,但在 webflow 中,您的流程或多或少直接用于此目的。实际上,您放置在范围映射中的所有内容都会汇总到请求属性中以供在 JSP 上使用,但请求范围除外,它在流返回时被显式销毁。这就是 viewScope.commandName 在 JSP 中可用的原因 - 因为它与其他范围一样,被卷入一个大的请求属性映射中,然后将其放入请求中供您的 JSP 访问。
不同之处在于,首先使用生命周期较低的作用域。较低的作用域总是优先于较长的作用域,就像 Java 中的局部变量优先于同名的类级变量一样。因此,您需要确保使用唯一的参数名称以防万一,以免发生冲突。
如果您确实需要该值,最简单的方法是在流程中使用 set 标记在适当的范围内设置该值,这样您就可以更轻松地命名它,例如
<set name="viewScope.currentService" value="externalContext.nativeRequest.queryString" />
这样您就可以在 View 范围内使用 EL 变量“currentService”。您可能希望使用 on-render 或 on-entry 将此值存储到您的 View 中。对于这个特定的值,我可能会使用 on-render,因为它可能会根据 View 的呈现方式而改变,但无论哪种方式都可能无关紧要。
关于java - EL 中的 Spring webflow 完整查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750618/
首先,我不知道如何为spring webflow配置restful url请求, 例如,如何在输入地址时调用我的 webflow: http://localhost/app/order/edit/10
我试图在 Spring 返回到我的主要流程,只需单击一个按钮即可从我的任何子流程中返回。 当我使用 它只是转到上一个流程,这也是应用程序中的一个子流程。 有任何想法吗? 最佳答案 您只需要在调用流中的
我正在使用 spring webflow,但我需要在使用转换 ==> 评估表达式访问的方法中访问我的 HttpSession。 (所以在包含我的流程的 xml 文件中) 到目前为止,我还没有找到一种方
(来自 SpringSource forum。) 当HttpSession已过期并且用户重新提交流程中的页面,他/她将被送回流程的开头。我想添加到此行为的只是一条消息,解释它发生的原因。 “你没有事件
我正在使用 spring webflow 1.0。我正在上传一个 csv 文件,对其进行解析并在继续之前显示结果。用户可以选择下载包含未通过验证的记录的 csv 文件。当我单击 JSP 中的链接下载此
获取 Spring Webflow 生成的 FLOW ID 完整列表的最佳方法是什么? 这是我的配置: [更新 1] 我应该澄清一下,我想在 Java 代码中执行此操作,而不是通
我有以下情况。我有一个按以下方式配置的 CommonsMultipartResolver bean。 我在 Spring Web Flow View 状态 jsp 中有一些文件上传字段。 如果文件
给予 ... 在jsp View 中我可以通过以下方式成功获取person ${person} 但是当我放入 requestScope 而不是 viewScope ${person}
我的流程中有一些输入,即 我想在最终状态中重定向到取决于此输入的位置。我正在尝试以下操作: 这是行不通的(webflow 不会用它的值替换 ${someInput} (它将它视为标准字符串。您知道
我有一个使用 Webflow 1.0 和 Spring 2.0 构建的项目。我们想升级到 Spring 3,但这需要 Webflow 2.X。 我已经更新了项目中的所有 Spring 和 Webflo
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
首先,我使用 spring webflow 和一些 spring javascript 来简化 ajax 调用。 截至目前,我让 ajax 调用 webflow 以显示适当的片段。 所以我试图使用 S
我正在研究 spring webflows。我的应用程序中有两个 webflow,一个用于添加人员详细信息,另一个用于修改人员详细信息。两个流程都运行良好。现在我想将参数传递给我的修改流程并访问它,以
希望在使用 grails webflow 时使 URL SEO 友好。它对 grails 使用的约定非常有限制,并且很难绕过它的构建方式。 例如,我在名为 FooController 的 Contro
我有两个 Controller ,每个 Controller 都有一个流程。在我的菜单中,有一个指向流程的链接。如果我在流#1中并单击流#2的链接,Grails将向我展示流#1的 View 。 我发现
Grails菜鸟在这里... 如何获取 Grails webflow 状态中的状态名称?我正在使用 Grails WebFlow 和 jQueryMobile 对移动应用程序进行原型(prototyp
我正在尝试使用Ajax请求过渡到WebFlow的下一个状态。但是它保持相同的状态,并返回GSP作为对该状态的响应,而我期望下一个状态的GSP。 以下是WebFlow代码: def gettingSta
我错过了一些东西...... 我有一个 Grails 网络流程,如下所示:- def childFlow = { start { action {
当我提交表单时,我想发送简单的 boolean 值。我不想在 View 状态下创建特殊模型。 所以我的问题是,我可以在没有模型的情况下传递值吗,因为它是使用 spring webflow 的简单单个值
我在一个应用程序中使用 Webflow 2.3.2,并且用户可以在绑定(bind)模型对象的列表中添加/删除一个步骤(他们只是在修改后返回到当前步骤)。例如我的对象可能看起来像这样: public c
我是一名优秀的程序员,十分优秀!