【问题标题】:JSTL proper for loop syntaxJSTL 适合循环语法
【发布时间】:2013-04-19 01:40:32
【问题描述】:

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

非常感谢任何帮助!

【问题讨论】:

    标签: java performance jstl


    【解决方案1】:

    您的 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>
    

    【讨论】:

    • 感谢@jeff,这很棒。我很好奇,但有没有更好的方法来使用纯 JSTL 做到这一点。我尽量不把它分成一个类,总的来说很好奇。
    • 可能有,但据我了解,JSTL 旨在仅支持简单的显示功能,其唯一目的是将表示与程序逻辑分开。任何 Java 代码都属于 Java 类。您使用的是哪种服务器端技术?
    • 我正在使用 java,但试图将所有内容都放入 JSTL,你知道这是可能的还是根本不可能的。
    • 德尔蒙,你杀了我,伙计。在这一点上,作为一名开发人员,我想我宁愿看到一整页的 scriptlet(for 循环和所有)而不是你上面的内容,但说真的……如果这段代码要在今晚过去,你自己做帮个忙,放在课堂上。
    • 哈哈,谢谢@jeff,我只是对任何事情都更加好奇,但除非我把它放到一个类中,否则这听起来是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2011-11-02
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多