无法在struts动作类中获取请求属性

时间:2011-08-01 10:36:30

标签: jsp struts

我有一个jsp页面。我在iframe中调用jsp页面并将新参数附加到url。

usrl看起来像

的http:\本地主机:8080 \ Search.pp等等= TRUE;

因此,当调用的搜索页面有一些过滤器时,所以在动作类中我有这样的代码

    String Parameter =  
          request.getParameter(blah);
    if (StringUtils.isNotEmpty(Parameter)) {
        Search = Boolean.parseBoolean(campaignSearchParameter);
    }

然后在jsp页面中我执行类似

的操作
    final Boolean Search = (Boolean) request.getAttribute("blah") == null ? false : (Boolean) request
        .getAttribute("blah");
 request.setAttribute("blah",Search); 

我使用这个“搜索”布尔变量来隐藏从另一个页面调用的东西。 因此,如果用户单击此页面中的任何链接,它将再次返回到struts相同的操作类。 我的问题是,第一次一切正常。下次我会期望在struts动作中设置这个变量,但看起来它正在返回null。

1 个答案:

答案 0 :(得分:0)

只要有问题的HTTP请求存在,请求属性就会生效。它在客户端实际发送它时启动,并在客户端检索到与HTTP请求关联的完整HTTP响应时结束。任何后续请求都是全新的请求,它根本不包含上一个请求的属性副本。

您需要将其作为请求参数传递。例如,作为另一页的形式的隐藏输入字段。

<form ...>
    ...
    <input type="hidden" name="blah" value="${fn:escapeXml(param.blah)}" />
</form>

(JSTL fn:escapeXml()是为了防止您的网站受到XSS攻击,同时重新显示用户控制的输入)