我试图在访问他之前选择的产品页面时向用户显示2个随机产品。有点像一个意见箱。
要完成此操作,请使用<c:forEach var="product" items="${categoryProducts}" begin="0" end="1" step="1" varStatus="iter">
它可以很好地显示前两个产品,但它非常有限,因为它将始终显示相同的两个产品(第一个和第二个)。
如何让标签得到提升并让它更智能?我希望程序每次都能显示2种不同的产品...像first-second
third-fourth
之类的东西......等等...
答案 0 :(得分:5)
如何让标签得到提升并使其更智能?
你犯了一个概念上的错误。 JSTL用于演示,不用于逻辑。应该基本上保留标签/ EL&#34; dumb&#34;并且只展示已经准备好的模型。它是准备模型的Java代码,负责实际逻辑,通常由(直接由servlet执行)执行。
您应该专注于负责准备${categoryProducts}
变量的Java代码。确切地说,代码必须改为&#34;使其变得更聪明&#34;。正是你必须添加&#34;智能&#34;到代码。没有魔力,只有逻辑。
在将${categoryProducts}
放入请求范围之前,最简单的方法是使用Collections#shuffle()
。例如:
List<CategoryProduct> categoryProducts = categoryProductService.list();
Collections.shuffle(categoryProducts);
request.setAttribute("categoryProducts", categoryProducts);