如何使用Jstl c:forEach显示随机数据?

时间:2015-09-18 03:27:10

标签: jsp jstl

我试图在访问他之前选择的产品页面时向用户显示2个随机产品。有点像一个意见箱。

要完成此操作,请使用<c:forEach var="product" items="${categoryProducts}" begin="0" end="1" step="1" varStatus="iter">

它可以很好地显示前两个产品,但它非常有限,因为它将始终显示相同的两个产品(第一个和第二个)。

如何让标签得到提升并让它更智能?我希望程序每次都能显示2种不同的产品...像first-second third-fourth之类的东西......等等...

1 个答案:

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