0

私の状況:

私のjspサイトでは、テーブルを表示しています。誰かが行をクリックすると、たとえば、この行は別の背景色でマークされる必要があります。また、複数の行をマークすることもできます。2 つのことが重要です。まず、どの行がマークされているかを覚えています。セカンド:どの順番で。

私の考えは:

ArrayList があり、すべての行 ID をこれに入れます。だから私は両方の問題を解決します。ここで、この ArrayList を次のクリックのセッションに配置し、jsp ファイルの行 ID ( req.getSession().setAttribute(req.getParameter("rowID") , ""+arrayList.size()); ) を設定します。

jspファイルの私の問題:

セッション変数名と呼ばれるものがわかりません。

このrowIdがすでにクリックされているか? ..

私は豆の名前しか持っていません。正確にこの行をマークする必要がある場合、セッションからコンテンツを取得するにはどうすればよいですか?

通常、セッション変数を次のように設定します: req.getSession.setAttribut("printView", Boolean.TRUE) そしてセッション変数を取得します:

私はストラット、フォームビーンズ、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 に答える