私はServlets/JSP/MVCを学んでおり、簡単なアプリケーションの設計について質問があります。私は人々が製品に投票できるサイトを持っています。アプリケーション・コンテキストでJavaサーブレットのセッションなど
私は、製品のArrayListのを持っている(モデルクラスが製品と呼ばれている)
私はすべての製品(コンテキストからリストを読み込み、に属性として転送を描くホームサーブレットを持っていますJSP)。項目はJSTLを使用して引き出されます。
プロダクトを表示するときに呼び出すことができるProductRateという別のサーブレットがあります。 doPost()はユーザーが製品(フォームで指定)に与えたレーティングを記録し、これをセッションに保存することになっています。
は、私は(アプリケーション・コンテキストに格納されている)製品情報だけでなく、それに与えられたように、ユーザーこと任意の投票だけでなくを表示するようにホームサーブレットの情報に参加できるようにしたいです。価値がない場合は、「あなたのXの投票に感謝します」などの言葉は表示されません。
"userRating"などと呼ばれる商品モデルクラスにフィールドを追加する必要があります。ホームサーブレットのリストを読むときは、そのフィールド値を調べ、投票値を「userRating」モデルに割り当てます値?
実際には、アプリケーションで常に使用されるオブジェクトの固定リストがありますが、JSPでそれらを描画するときは、セッションに格納されている情報(投票値)と結婚してモデルを処理するためのきれいな方法が必要ですあなたのPOSTサーブレット/コントローラで
<c:forEach items="${products}" var="product">
<h2>${product.name}</h2>
${product.description} <br/>
<c:choose>
<c:when test="${not empty ratings[product.id]}">
${ratings[product.id].stars} <br/>
${ratings[product.id].comments} <br/>
</c:when>
<c:otherwise>
You have not rated this product
</c:otherwise>
</c:choose>
</c:forEach>
:JSPであなたがキーとしてプロダクトIDをセッションにマップでランキングを格納することができ、その後、JSPは次のようになりますそよ風
徹底的な回答ありがとうございます...私は特定のMVCフレームワークを現在使用していません、ただのサーブレット/ JSPなどです。 – xingyu