- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Spring Web Flow(1.0.5 版)并且我有一个 JSP 页面,该页面对流进行 AJAX 调用并需要读入 XML 结果。该流成功地将对象设置到 FlowScope 中,然后调用 JSP 页面来呈现结果。在 JSP 页面中,我想测试该对象是否具有属性(例如,.firstName),如果有,则执行某些操作。我可以使用 JSTL 表达式语言(通过 ${userObj})访问 FlowScope 中的变量,但这只是让我吐出来。我已经尝试了以下方法来获取它并围绕它添加逻辑,并取得了不同程度的成功。
更新:剩下的问题是:如何获取 scriptlet (<% %>) 部分中的上下文和流范围?
<rootnode>
<!-- Attempt 1: c:if isn't being interpreted (though ${userObj.firstName} is),
it's just displaying the tags on the page. -->
<!-- Update, I didn't have the <%@ taglib directive for jstl/core.
Now I do, and they're being interpreted, but it says
"According to TLD or attribute directive in tag file,
attribute test does not accept any expressions"
How can the if/@test not accept expressions? Isn't that its whole purpose
in life? -->
<!-- Update 2, I also forgot the taglib for the rt language, which is separate,
I guess (jstl/core_rt). <c:if test now works properly. -->
<c:if test="${!empty(userObj.firstName)}">
<test>not empty</test>
</c:if>
<%
/* Attempt 2: This throws an error, can't resolve "context". How do I get the context? */
if (context.getFlowScope().userObj != null) {
out.write("not null");
} else {
out.write("not not null");
}
%>
<!-- Attempt 3: This works, I get the reference to the Object and it
spits out the correct firstName, gives me no control other than
spitting out the value. -->
<userReference>${userObj}</userReference>
<userReference_firstName>${userObj.firstName}</userReference_firstName>
</rootnode>
最佳答案
如果您安装了 JSTL 并以正确的方式声明了 taglib 并将 web.xml
声明为至少 Servlet 2.4,则尝试 1 应该可以工作。另请参阅问题:
要测试对象是否为空,您应该使用以下结构:
<c:if test="${not empty userObj.firstName}">
或
<c:if test="${userObj.firstName != null}">
强烈建议不要尝试 2。 Scriptlet 是一种糟糕的做法,应该始终用 JSTL 和 EL 等标签库替换(就像您在尝试 1 中所做的那样)。如果由于技术原因不可能,那么编码应该在真正的 Java 类中完成,(间接地)从 Servlet 开始。
尝试 3 是可行的,但我建议将 servlet 与 Javabean-to-XML 序列化程序一起使用,如 XStream反而。通过这种方式,您可以透明地将一组 Javabeans 提供给响应的输出流。
关于java - 从没有 JSTL 的 JSP 访问 FlowScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593848/
根据我的应用程序要求,我必须为登录过程声明一些变量(例如,失败的登录尝试)。 因此,使用 context.getFlowScope().put("count", ++count); 似乎是解决方案。但
在我的 Spring Web Flow 应用程序中,我的 action-state 之一过渡看起来像这样: 我要设置flowScope.error到文字字符串“f
在我的 Spring web 流程中,我在 FlowScope 中有一个名为“action”的变量,我想在验证方法中检查这个变量; \\\\\\ if(action=="copy"){
在我的 Spring web 流程中,我在 FlowScope 中有一个名为“action”的变量,我想在验证方法中检查这个变量; \\\\\\ if(action=="copy"){
我想在我的 JSP 页面上列出各种 webflow 上下文范围(viewScope、flowScope 等)中的所有内容以进行调试(第一个 webflow 应用程序,试图让它工作。)但我似乎无法获得正
我有一个子流,我在其中定义了 var,例如 现在我有三个 View 状态,我想在第一个状态下更改此变量并将其发送到第三个状态。但是当我处于第三个 View 状态时,它变为空。如何在所有 View
编辑:我没有对这个问题有所了解,所以我要添加更多细节。 我有一个 Spring Webflow 应用程序(版本 2.3.2)。我需要从其中一个步骤的验证内部(而不是流程本身内部)访问多个 FlowSc
我正在使用 Spring Web Flow(1.0.5 版)并且我有一个 JSP 页面,该页面对流进行 AJAX 调用并需要读入 XML 结果。该流成功地将对象设置到 FlowScope 中,然后调用
javax.faces.flow.FlowScoped 和 javax.enterprise.context.ConversationScoped bean 之间有什么区别,什么时候应该在应用程序中使
这类似于 Spring Web Flow - How can I set up unit test with values already in conversationScope? 我已使用该问题中
我是一名优秀的程序员,十分优秀!