如何从会话变量中获取内容?

发布于 2024-07-13 03:22:03 字数 640 浏览 8 评论 0原文

我的情况:

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

我的想法是:

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

我在 jsp 文件中的问题:

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

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

我只有豆子的名字。 我怎样才能从会话中获取内容,如果确切地说必须标记这一行?

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

我使用 struts、formbeans 和 jsp。

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

My situation:

On my jsp site I show a table. When somebody click a row, this row must be marked with an other backround color for example. Also more then one row can be marked. Two things are important.
First: I bear in mind which rows are marked.
Secend: In which order.

My idea is:

I have a ArrayList and put all row IDs in this. So I solve both problems. Now I put this ArrayList in the session for the next click and the row ID ( req.getSession().setAttribute(req.getParameter("rowID") , ""+arrayList.size()); ) for the jsp file.

My problem in jsp file:

I don't now what's called session variable name.

if this rowId alrady clicked?
..

I have got only the bean name. How can I get the content from the session, if exact this line must be marked?

Normally I set a session variable so: req.getSession.setAttribut("printView", Boolean.TRUE) and get a session variable so:

I work with struts, formbeans and jsp.

Sorry, I haven't good English and this problem is so difficult for me. So I can't declare it better at this time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如果没有 2024-07-20 03:22:03

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

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

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

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

回答您的问题“我现在不要所谓的会话变量名。” 无法给出,因为它取决于 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 及其索引的列表将告诉您它们的时间顺序。

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

Let's first analyze what you are storing in session:

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

req.getParameter("rowID") returns String value of the request parameter. If your page link is yourPage.jsp?rowID=3 its value will be "3". This value will be used as a key in the invocation of the method HttpSession#setAttribute(String, Object).

""+arrayList.size() is just a String representation of the size of your arrayList in which you are trying to store IDs of clicked rows

Answer to your question "I don't now what's called session variable name." cannot be given since it depends on the value of rowID request parameter.

If you want to check what is in the session just iterate through its attributes:

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

If you don't store your arrayList in the session previous code will probably return something like this:

1 : 0
5 : 0
1 : 0

As Vinegar suggested I would do next:

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);

Your arrayList will be holding a list of clicked row IDs and their indices will be telling you about their chronological order.

Note: There are certainly better and more scalable ways to achieve this. Anyway, it's a good idea to implement your solution and then look for a better one.

把回忆走一遍 2024-07-20 03:22:03

非常感谢。
如何评估会话中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>

Thank you very much.
How evaluate the arryList in jsp file, which is in session?

<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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文