问题标签 [spring-webflow-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - EL中的Spring webflow完整查询字符串
简而言之,如何在 webflow 视图 jsp 中使用 EL 获取完整的查询字符串?这就是我想要做的:
除了我想使用 EL 而不是 scriptlet <%=request.getQueryString() %>
。使用 获取任何单个参数似乎很容易${param.someParameterName}
,但我想要整个事情。更具体地说,我使用CAS作为 SSO 提供程序。为了进行身份验证,应用程序将使用包含参数的查询字符串将其登录重定向到 CAS,该参数service
是身份验证成功后要返回的 URL。像这样的东西:
我的 CAS 登录页面有一个忘记密码 webflow 的链接。我需要将该服务参数传播到其他网络流。所以我可以做这样的事情:
但后来我失去了所有的 URL 转义。此外,如果将来我想保留其他参数,它们也会丢失。
scriptlet 目前可以工作,但它很难看,我不喜欢在我的演示文稿中包含代码(因为这是真正的 java 代码),即使它很微不足道。EL 无疑是一个更优雅的解决方案。
我查看了spring 文档中列出的所有特殊 EL 变量,但仍然无法找到获取完整 queryString 的方法。
- - - - - - - - - - - - - - - - 更新 - - - - - - - - - ---------------
好的,所以我正在做一些基础......原来ExternalContext
接口有一个getNativeRequest()
这是实际的HttpServletRequest
对象。从那里我可以得到完整的查询字符串:
所以现在我假设由于有一个名为 externalContext 的特殊 EL 变量,我会这样做:
正确的?错误的!事实证明,该externalContext
变量在 JSP 页面中不可用。有谁知道为什么?但是,还有flowRequestScope
,它可用于 JSP 并且有一个getExternalContext
方法,所以现在我可以这样做:
酷,这行得通……但为什么有必要呢?为什么只有一些特殊 EL 变量被推送到 JSP 页面,为什么其中一些变量会发生变化(viewScope
似乎它的所有值都提升到了根级别,所以 viewScope.commandName 在 JSP 中被引用为 ${commandName}艾尔)?我一定遗漏了 WebFlow 工作方式中的一些基本内容。有人可以指出我正确的方向吗?
spring-mvc - Spring Web Flow 2 Setup,不渲染 ${flowExecutionUrl} 甚至启动
我正在将一个简单的 Spring MVC 与 Web Flow 应用程序放在一起,但我无法让它在页面上呈现 flowExecutionUrl,以便我可以导航到下一个状态。我认为这意味着流程没有开始(是否有明确的触发器?)。我假设我的设置有问题,尽管日志表明我正在正确注册 flow.xml 文件。
我的弹簧配置(mvc-dispatcher-servlet.xml)是:
我的 flow.xml 是:
我可以成功导航到视图。
我的jsp是:
spring - Spring Webflow:如何强制流程重新开始?
我是 SWF 新手,我意外地继承了 SWF 应用程序的维护。
用户在屏幕顶部有一个水平菜单,其中出现 5 个选项。单击其中一个时,屏幕中会加载一个 portlet。
两天前,我收到了一个任务:每当用户单击其中一个选项时,portlet 必须忽略其先前的状态并重新开始。
示例:其中一个 portlet 称为“SEARCH”,另一个称为“REPORTS”。今天,如果用户点击“搜索”,应用程序会显示一个小表单和一个“开始”按钮。单击“开始”后,应用程序会显示一个结果列表,每个结果都带有一个编辑按钮。单击编辑其中之一后,应用程序会显示所选结果的详细信息。到现在为止还挺好。
继续该示例,假设用户现在单击菜单中的“报告”选项。该应用程序将显示报告 portlet 及其自己的内容。再说一次,到目前为止,很好。
但是,如果用户现在再次单击“搜索”,portlet 将显示其最后状态,即先前搜索项目的版本。
我被要求更改此行为,因此每次用户单击“搜索”时,它将打开为空,也就是说,portlet 的 webflow 将重新从头开始。
我怎样才能做到这一点?有人可以帮我吗?
我搜索了 SMF 的文档,也研究了 spring-webflow-config-2.0.xsd 文件,为这个案例寻找了一些具体的配置,但无济于事。
谢谢,
FQL
spring - Spring Web Flow 异常处理
如何防止异常,如果requestParameters.sortBy
作为字符串()传递java.lang.NumberFormatException
或缺少(java.lang.NullPointerException
)?
spring-webflow - 如何在 Spring WebFlow 中处理来自 CommonsMultipartResolver 的 SizeLimitExceededException?
我有以下情况。我有一个按以下方式配置的 CommonsMultipartResolver bean。
我在 Spring Web Flow 视图状态 jsp 中有一些文件上传字段。
如果文件低于限制,一切正常,但如果文件超过 2MB-s 的限制,我必须在表单的绑定结果中添加验证错误。
我的问题是多部分文件解析器在超过文件限制时抛出 org.apache.commons.fileupload.FileUploadBase.SizeL imitExceededException 异常,我找不到在 Spring Web Flow 中捕获此问题并将我的 FieldError 添加到形式。
我尝试使用转换标记的 on-exception 属性,但如果我理解正确,它仅适用于 Spring Web Flow 中引发的异常。
我也尝试在 spring mvc 中使用 SimpleMappingExceptionResolver,但我不想重定向到页面,我想处理这个异常。
我还发现了这个:https ://jira.springsource.org/browse/SWF-158
但它来自 1.0 版,我假设它已经被合并,或者找到了更好的方法来处理这些情况。
任何有关如何处理此问题的想法将不胜感激。
谢谢。
java - 会话流应用实现
Spring Web Flow 是否在工业中广泛用于会话流行为应用程序或向导类型的应用程序。使用此类应用程序的主要目的是减少我们需要保留在会话中的数据,对吗?是否值得使用诸如 Web 流之类的框架,或者此类企业应用程序的其他行业标准实现是什么?
以下是与 Spring 声称的 Spring Web Flow 相比,正常实现的缺点,
- 可视化流程非常困难。
- 该应用程序有很多代码访问 HTTP 会话。
- 强制执行受控导航很重要,但不可能。
- 正确的浏览器后退按钮支持似乎无法实现。
- 浏览器和服务器与“返回”按钮的使用不同步。
- 多个浏览器选项卡会导致 HTTP 会话数据出现并发问题。
spring - spring webflow变量序列化
我有为三个不同实体提供处理的流程。因此,我有具有公共流状态的父流定义,并且在具体流定义中,我用真实数据和动作实现扩展了该流。
我想将处理实体的bean实例存储在变量中,这样我就可以在父流定义中访问这个变量。
在父流定义中
在具体的流程定义中我有
concreteProcessor
实现必要处理的单例 bean在哪里。它是无状态的,因此序列化它是没有用的,而且它包含自动装配的 dao 变量,其实现使用无法序列化的 HibernateDaoSupport。
有没有办法克服这个问题?我有一个解决方案,但这不是很方便,因为我需要在每个具体的处理器方法调用的具体流定义样板代码中编写。
这有点麻烦。
spring - 从 Spring Web 流中的 GET 读取查询字符串
海。
我使用执行键继续一个弹簧网络流。(订单贝宝付款),并且需要从 get 读取查询字符串。&TokenID 和 &PayerID
这是确认付款后 Paypal 重定向用户的 URL 的样子:
如果 eventID 获得批准,我的流程将重定向到付款确认状态。这部分正在工作。我只需要以某种方式获取查询字符串参数。
有什么办法可以做到这一点?
spring-webflow-2 - 无法启动 Spring Web 流 2.3.1 (Spring 3.2.0 + JSF 2.0)
我无法使用 Spring web flow 2.3.1 + Spring 3.2.0 + JSF 2.0 启动流。Spring 正在初始化,但是当我尝试加载流程时,没有任何反应。
我附加了一个 FlowExecutionListener,它被创建了。但是没有控制权返回给它。与我尝试获取 RequestContextHolder.getRequestContext() 的方式相同,它返回 null。
我不确定配置有什么问题。我尝试了配置中提到的所有步骤。
我正在使用以下课程,
导航处理程序 - org.springframework.web.jsf.DelegatingNavigationHandlerProxy 变量解析器 - org.springframework.faces.webflow.SpringBeanWebFlowVariableResolver
我有自定义的 ContextLoadListener,它会被调用。我将 webflow 配置 xml 作为 contextConfigLocation 参数传递给加载。该文件也正在加载,因为我已将 FlowExecutionListener 注册到其中。
spring-mvc - Spring Message Resource Bundles - 适合白标和版本控制?
我想知道是否有人可以提供帮助。我们正在组合一个 Spring MVC 和 Webflow 应用程序,并希望将所有屏幕文本等放在数据库支持的消息资源包中。我有一个简单的实现这个工作没问题。但是,我们需要支持应用程序的白标,包括文本的版本控制。
当我说“白标”时,我的意思是核心应用程序需要为不同的商业品牌打上烙印。品牌的 css 元素很简单——我们将使用 Spring 主题。但品牌延伸到不同的屏幕文字。例如,brandX 可能会问“你叫什么名字”,brandY 可能会问“请输入你的名字”。
此外,我们需要支持每个品牌的屏幕文本版本控制。这是为客户提供一致的用户旅程和信息 - 例如:如果他们在第 1 天看到一组给定的屏幕标签并保存他们的报价,他们应该在第 10 天检索他们的报价时看到相同的屏幕标签等,即使该品牌的屏幕文本同时进行了 5 次迭代。(实际上变化的频率不会那么频繁,但我们仍然需要支持它)
我已经玩了一段时间了,在我早期的实验中,我认为我可以简单地为资源包中的消息键添加前缀:
但这在几个方面感觉是错误的。
- 除非我们有每个品牌的视图(我们可能必须这样做),否则视图需要以某种方式基于模型或主题中的某些内容应用前缀。视图了解模型以选择正确的消息来显示感觉是错误的
- 我不知道如何应用版本控制(除了将其添加到复合键 = brandX.firstname.v2 = 你的名字是什么?)
总而言之,我得出的结论是,这不是消息资源包的用途——它们非常适合基于语言环境的国际化(这就是它们的用途!),但现在我正在尝试做一些完全不同的事情他们。感觉消息资源包作为解决方案可能不适合我的要求。
有没有其他人做过这样的事情?你是怎么解决的?
干杯
弥敦道