Spring Webflow访问使用context.getFlowScope()。put(key,Obj)在JSP中创建的流作用域变量

时间:2016-03-07 19:01:26

标签: spring jsp el spring-webflow

我是Spring Webflow的新手,这是我的问题:

我在Action Class中创建了一个flowcope变量,如下所示:

public void getStatusValue(HttpServletRequest req, RequestContext context) {
    //This 'appStatus' value will return either "yes" or"no"
    String status = req.getSession(true).getAttribute("appStatus");
    if("yes".equalsIgnoreCase(status)){
        context.getFlowScope().put("applicationStarted" , "yes");
    } else {
        context.getFlowScope().put("applicationStarted","no");
    }
}

我使用

从xml文件调用此方法
<on-entry>
    <evaluate expression = "Action.getStarted(FlowRequestContext)"/>
</on-entry>

getStarted()方法将调用getStatus()方法 我能够使用

打印该值
context.getFlowScope().get("applicationStarted") 

并打印在动作类

现在,在JSP上,我试图以这种方式检索“applicationStarted”变量的值

<script type=text/javascript">
var status = ${applicationStarted};
alert(status);
if(status == "yes")
//do something

else
//do something

问题是:1。警报根本没有打印 并且不知何故,jsp中的if条件没有执行,所以我没有得到逻辑工作

有人可以指导我吗?

编辑: 搜索之后,我了解到JavaScript流不能直接访问webflow变量,所以我尝试在jsp中使用<c:set>标记,并尝试这样设置:

<c:set var="applicationStarted" scope="session" value="     {applicationStarted"}"/>
JavaScript中的

var status = "<c:out value='${applicationStarted}'/>";

我仍然看不到打印的警报,逻辑也不起作用。 我相信我可能会遗漏一些关于语法的东西。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我找到了上述问题的解决方案。 对于遇到同样问题的其他人来说,这是修复。

在javascript上,同时使用访问变量 只需提供如下的sessionScope:

var status = "<c:out value='${sessionScope.applicationStarted}'/>";

将填充“status”的值