当他访问他之前选择的产品页面时,我试图向用户显示2个随机产品.有点像一个意见箱.
要做到这一点,我正在使用 <c:forEach var="product" items="${categoryProducts}" begin="0" end="1" step="1" varStatus="iter">
它在显示前两个产品时工作正常,但它非常有限,因为它总是会显示相同的两个产品(第一个和第二个).
如何让标签得到提升并让它变得更聪明?我希望程序每次都显示2种不同的产品... first-second third-fourth等等...
如何让标签得到提升并让它变得更聪明?
你犯了一个概念上的错误.JSTL用于演示,不用于逻辑.标签/ EL应该基本上保持"哑",只是呈现已经准备好的模型.它是准备Java模型的Java代码,负责实际逻辑,通常由(直接由servlet执行)执行.
您应该关注负责准备${categoryProducts}变量的Java代码.正是这段代码必须改为"让它变得更聪明".正是你必须为代码添加"智能".没有魔力,只有逻辑.
Collections#shuffle()在放入${categoryProducts}请求范围之前最容易使用.例如:
List<CategoryProduct> categoryProducts = categoryProductService.list();
Collections.shuffle(categoryProducts);
request.setAttribute("categoryProducts", categoryProducts);
Run Code Online (Sandbox Code Playgroud)