2012-02-26 7 views
3

JSP Scriptlet의 다음 코드는 Spring/Hibernet을 사용하여 필요한 코드와 정확히 일치합니다.forEach 루프 내에서 JSTL의 문자열을 연결하는 방법은 무엇입니까?

<% 

org.hibernate.Session s=NewHibernateUtil.getSessionFactory().getCurrentSession(); 
s.beginTransaction(); 

java.util.List<model.Movies> m=s.createQuery("from model.Movies order by moviesId").list(); 

for(model.Movies row:m) 
{ 
    String id=""; 
    for(model.Language lan:row.getLanguages()) 
    { 
     id+=lan.getLanguageId()+","; 
    } 
    out.println(id); 
} 

s.flush(); 
s.getTransaction().commit(); 

%> 

그것은 데이터베이스의 각 영화에 대한 영화 langiageId을 표시합니다 (하나의 영화는 많은 언어가 있습니다). 각 영화에 대해 쉼표로 구분하여 languageId을 연결합니다. 예를 들어 첫 번째 영화에 3 개의 languageId가 있으면 1,2,3이 표시됩니다. 두 번째 영화 (데이터베이스의 행)에 4 개의 언어가 있으면 다음 줄에 4,5,6,7 등이 표시됩니다. JSTL에서는 어떻게 같은 일이 가능합니까? 다음은 내가 알지 못했던 JSTL forEach 루프의 불완전한 버전입니다.

<c:forEach items="${list}" var="row" varStatus="status"> 
    <c:forEach items="${row.languages}" var="lan" varStatus="status"> 
     <c:set value="${lan.languageId}" scope="request" var="id"> 

     </c:set> 

    </c:forEach> 
</c:forEach> 

languageId은 각 영화 그룹마다 쉼표로 구분 되려면 어떻게해야합니까? forEach 내부가 완료되면 id을 Scriptlet에 표시된 것과 같은 빈 문자열로 다시 초기화해야합니다.

+0

나는 사용자 정의 태그 또는 함수에서이 마무리 것; 쉼표로 구분 된 목록을 작성하는 것만으로도 많은 소음이 발생합니다. –

답변

3

이 수행해야합니다

<c:set value="${id}${status.first ? '' : ','}${lan.languageId}" scope="request" var="id" /> 
+0

그것은 나를 위해 일했습니다. 나 또한 같은 *을 달성하기 위해 * 커스텀 태그를 사용했다. 감사. – Bhavesh

+0

반갑습니다. – BalusC

관련 문제