总的来说,我对JSTL和Java很陌生。有没有更好的方法来格式化此for循环,看来我可以对其进行分解以使其更整洁。理想情况下,我不想不必转义字符串,但不确定如何或是否有更好的方法?我知道在JSTL中声明变量时,可以使用c:标记内的属性执行以下操作。您可以使用for循环执行类似操作吗?

<c:set var="childNode"><%= properties.get("childrenNode", "") %></c:set>

<c:forEach items="<%=childResults.getPath((Child)pageContext.getAttribute(\"childPage\"), currentPage, new showChildrenFilter())%>" var="segment" varStatus="status">
   ${displaySomething}
</c:forEach>


任何帮助是极大的赞赏!

最佳答案

您的JSP上有很多Java代码(脚本)。使用JSTL可以帮助您摆脱使用scriptlet的麻烦,因此可以帮助您将代码逻辑与演示文稿分开,从而更易于维护。如您所见,页面上有很多简单的Java代码。

这就是我使用JSTL进行循环的方式。通常,在服务器端,我将在请求属性中准确设置所需的内容。因此,这可能取决于您的工具/框架,但是通常您可以以某种方式访问​​HttpServletRequest。仅以HttpServlet的doGet()方法为例

// this is in my servlet
public void doGet(HttpServletRequest req, HttpServletResponse resp)
{
   Collection<Circle> circles = // some logic here
   req.setAttribute("circles", circles);
}


然后在JSP上,我将遍历所有设置

<c:forEach items="${circles}" var="circle">
   Radius: ${circle.radius}, Color: ${circle.color} <br/>
</c:forEach>

关于java - JSTL适用于循环语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16095882/

10-12 01:25