0

我对 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>

任何帮助是极大的赞赏!

4

1 回答 1

2

您的 JSP 上有很多 java 代码(scriptlet)。使用 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>
于 2013-04-19T02:33:53.503 回答