0

我的情况:

在我的 jsp 网站上,我展示了一张表格。例如,当有人单击一行时,该行必须用其他背景颜色标记。也可以标记多于一行。有两件事很重要。首先:我记住标记了哪些行。第二:按什么顺序。

我的想法是:

我有一个 ArrayList 并将所有行 ID 放入其中。所以我解决了这两个问题。现在我将此 ArrayList 放入会话中以供下次单击和 jsp 文件的行 ID( req.getSession().setAttribute(req.getParameter("rowID") , ""+arrayList.size()); )。

我在jsp文件中的问题:

我现在不知道所谓的会话变量名。

如果这个 rowId 已经点击了?..

我只有 bean 名称。如果必须准确地标记此行,我如何从会话中获取内容?

通常我设置一个会话变量: req.getSession.setAttribut("printView", Boolean.TRUE) 并获得一个会话变量:

我使用 struts、formbeans 和 jsp。

对不起,我的英语不好,这个问题对我来说太难了。所以我现在不能更好地宣布它。

4

2 回答 2

0

让我们首先分析一下您在会话中存储的内容:

req.getSession().setAttribute(req.getParameter("rowID") , ""+arrayList.size());

req.getParameter("rowID")返回请求参数的字符串值。如果您的页面链接是yourPage.jsp?rowID=3它的值将是"3"。该值将用作调用方法HttpSession#setAttribute(String, Object)的键。

""+arrayList.size()只是您尝试在其中存储单击行的 ID 的arrayList大小的字符串表示形式

回答您的问题“我现在不知道所谓的会话变量名称。” 无法给出,因为它取决于rowID请求参数的值。

如果要检查会话中的内容,只需遍历其属性:

for (Enumeration elem : req.getSession().getAttributeNames()) {
    String name = elem.nextElement();
    System.out.println(name + " : " + req.getSession().getAttribute(name));
}

如果您不将 arrayList 存储在会话中,则之前的代码可能会返回如下内容:

1 : 0
5 : 0
1 : 0

正如 Vinegar 建议的那样,我接下来会做:

String clickedRowId = req.getParameter("rowID");
List<String> arrayList = (List)req.getSession().getAttribute("clickedRows");
if (!arrayList.contains(clickedRowId)) {
    arrayList.add(clickedRowId);
}
req.getSession().setAttribute("clickedRows", arrayList);

您的 arrayList 将保存单击行 ID 的列表,它们的索引将告诉您它们的时间顺序。

注意:当然有更好和更可扩展的方法来实现这一点。无论如何,实施您的解决方案然后寻找更好的解决方案是个好主意。

于 2009-01-30T13:26:30.140 回答
0

非常感谢。如何评估会话中的jsp文件中的arryList?

<datagrid:tableEx ...>
<c:if test="${ arrayList.contains(bean.rowID)}">
    <div id="tableheader">
                 <datagrid:column property="bean.rowID" ... bgcolor="#BDC6DD"/>
                 <datagrid:column ... bgcolor="#BDC6DD" />
                 <datagrid:column ... bgcolor="#BDC6DD" />
                  ...
    </div>
</c:if>
<c:if test="${!arrayList.contains(bean.rowID)}">
    <div id="tableheader">
                 <datagrid:column property="bean.rowID"/>
                 <datagrid:column ... />
                 <datagrid:column ... /> 
            </div>
</c:if>

于 2009-01-30T13:47:04.937 回答