- 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/
我升级了 Java EE Web 应用程序以使用较新的 PrimeFaces 版本,突然在 PrimeFaces commandlink 的操作属性中调用重载 bean 方法不再起作用。我尝试使用 J
考虑以下代码片段。 var SomeView = Backbone.View.extend({ collection: new SomeCollection(), render: fu
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的 JSP 在 Tomcat 7 中运行良好,但在 Tomcat 6 中不起作用,我认为这是因为您不能从 EL 2.1 调用方法(getter/setter 除外)。 我需要调用的方法不能命名为ge
这个问题在这里已经有了答案: How to nest an EL expression in another EL expression (2 个答案) 关闭 5 年前。 我有 Java 枚举类型,
为什么会这样? ....Some Code 在我的 profielForm 中,我只有一个 getCityOptions() 方法,没有 cityO
我正在关注 backbone.js tutorial并遇到了 2 个函数 initialize() 和 render()。 initialize() 在附加一些 html 时使用了 $(self.el
对于给定的示例,this.el 和 this.$el 之间有什么区别? 我知道 this.$el 指向 this.el 的 jQuery 对象,在本例中是 'li'。 当我呈现 View 时,我可以在
我一直在我的主干应用程序中使用 this.$el,如下所示: render: function() { this.$el.html(this.template); }, 然后我在网上看到代码使
我想使用 EL 在 jsp 中调用一个传递给它的参数的 bean 函数。问题是它不允许这样的事情:“${teacherBean.certificationFor(${particularField})
有没有办法可以在 EL 中获取 ServletContext 中设置的属性,使其最终成为 JavaScript 变量? 我将其设置为 context.setAttribute("testing.por
我正在编写 JSP/JSTL,并且我正在尝试遍历数据库中的几个项目。 我目前在数据库中有三列,${image1} , ${image2}和 ${image3} .我正在尝试使用以下代码为他们打印信息:
this.$el.html 和 this.$el.append 在渲染模板时有区别吗?我对 js、backbone 等完全陌生。在我正在从事的当前项目中,我看到类似 this.$el.append(P
我刚刚学习了一些主干教程,我有一个一般的 jQuery 问题,我实际上已经想知道了一段时间。 有时我会在 jQuery 选择器中看到带有第二个参数的调用,例如 $('ul', this.el)。 选择
有没有办法在 SpEL 中调用静态接口(interface)方法?例如: T(java.util.stream.IntStream).of(new Integer[]{1,2,3}).sum() 当我
这个问题已经有答案了: If a DOM Element is removed, are its listeners also removed from memory? (6 个回答) 已关闭 5 年
JBoss EL resolver online documentation中有这句话: It's important to fully understand how this extension t
使用 JSF 2.0 和 EL,我试图在 POJO 上调用一个方法,它是一个 viewscoped bean 的一个属性。该代码实际上与 @BalusC 非常相似的教程here .当我调用一个不带参数
所以我整个下午都在 this problem 上卡住了我最终解决了。原来我分配的是 el 而不是 $el。 两者有什么区别,我应该在什么时候使用它们? 最佳答案 直接来自 the documentat
我正在努力学习 Backbone 。我知道 el 是正在执行的元素。如果未指定,则为空 div。我正在我的 View 中创建一个模板并返回 View 对象。然后我正在渲染 View ,但我不明白为什么
我是一名优秀的程序员,十分优秀!