0

我想了解请求属性的行为方式。我现在在会话中设置了一些值,这给我带来了很多问题。我将它们全部转换为请求属性。

我有一个动作类,在视图方法中我设置了这样的东西,

       public ActionForward view(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception
        {
//...
request.setAttribute("abc", abc);
//...
    }

当我单击选项卡并显示页面时,将调用此视图方法。此页面中还有另一个按钮,称为“导出”。我已经进行了导出调用相同的操作类并调用了一个名为 exportExcel 的方法,如下所示:

public void exportExcel(ActionMapping mapping, ActionForm actionForm,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception
    {
    if(request.getAttribute("abc")!=null){
        String def = (String)request.getAttribute("abc");
    }
}

假设我会得到请求参数。它没有用。另外,我不想在会话中设置这个变量。是否有任何解决方法可以在此 exportExcel 方法中获取此请求属性?

4

2 回答 2

1

在您的 jsp 中,您需要创建隐藏的输入字段name="abc"并将其值设置为 abc 请求属性值。这样,当用户单击您的导出按钮时,它将被提交回来。

如果您的导出按钮是一个锚点,那么您可以href使用 abc 参数名称/值来设置它。

于 2013-03-20T16:36:46.437 回答
1

请求属性仅在单个请求的持续时间内存在;这就是请求范围的用途。如果您希望某些内容在请求中持续存在,请将其保留在会话中

如果您想在请求中重新创建某些内容,请使用表单元素、URL 参数等。

于 2013-03-20T16:55:30.347 回答