2013-04-19 2 views
0

Я довольно новичок в JSTL и хорошо Java вообще. Есть ли лучший способ отформатировать это для цикла, похоже, я мог бы разбить его немного больше, чтобы сделать его более чистым. В идеале я бы не хотел избегать строк, но не уверен, как или если есть лучший способ? Я знаю, что при объявлении переменных в JSTL вы можете сделать что-то вроде ниже с свойством внутри тега c:. Есть ли что-то подобное, что вы можете сделать для циклов?JSTL для синтаксиса цикла

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

Любая помощь очень ценится!

ответ

2

В вашем JSP есть много java-кода (скриптлетов). Использование JSTL может помочь вам избежать использования сценариев и, следовательно, поможет вам отделить логику кода от презентации, которая лучше подходит для обслуживания. Как вы можете видеть, на вашей странице есть хороший код 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> 
+0

благодаря @jeff это здорово. Мне любопытно, но есть ли лучший способ сделать это с помощью чистого JSTL. Я стараюсь не отделять его от класса и вообще любопытно вообще. –

+2

может быть, но его понимание того, что JSTL имеет целью просто поддерживать простые функции отображения с единственной целью - отделить презентацию от логики программы. Любой Java-код принадлежит классу Java. Какую серверную технологию вы используете? – jeff

+0

Я использую java, но, пытаясь получить все в JSTL, вы знаете, возможно ли это или просто не может быть и речи. –

Смежные вопросы