2009-05-30 4 views
0

http://jsbin.com/awoco과 같은 HTML 페이지를 얻으려고합니다.일부 HTML/CSS는 Struts2의 단점을 극복하기 위해

이것은 JSP 페이지이므로 스크립틀릿을 포함합니다. 최종 HTML 출력이 (공간을 절약하기 위해 닫히지 않은 태그)와 같은 종류의 것입니다 :

<% 
Iterator it = MyList.iterator() 
     While (it.hasNext()) 
     SomeClass all = it.next(); 
     SomeClass a = it.next(); 
     SomeClass b = it.next(); 
%> 
     <tr> 
     <td rowspan=3 valign=top>Red<td><%=all.Name()%><td><%=all.price()%><td><%=all.originalPrice()%> 
     </tr> 
     <tr> 
     <td><%=a.Name()%><td><%=a.price()%><td><%=a.originalPrice()%> 
     </tr> 
     <tr > 
     <td><%=b.Name()%><td><%=b.price()%><td><%=b.originalPrice()%> 
     </tr>  

당신이 볼 수 있듯이, 나는 while 루프 내부에 next() 3 번 호출해야합니다. 이는 데이터의 출처가 그런 방식으로 채워진 목록이기 때문에 위에 제공된 링크와 완전히 동일한 방식으로 데이터를 표시해야하기 때문입니다.

HTML 출력을 어떻게 든 변경하여 next()을 두 번 이상 호출 할 필요가 없지만 여전히 동일한 테이블 구조를 얻을 수 있습니까?

+0

문제에 관해 유용한 조언을 제공 할 수는 없지만 HTML이나 CSS와 관련이 없다고 생각합니다. 질문은 효율적으로 만드는 방법에 관한 것 같습니다. 소스를 출력하는 방법보다는 소스에서 출력하는 방법에 대해 설명합니다. –

답변

0

데이터 구조를 변경하십시오. MyListSomeClass (all, a, b) 유형의 멤버 3 개를 포함하는 AgregateClass 목록이어야하며 그 다음 간단히 MyList을 반복해야합니다.

팁 : Struts2를 사용하는 경우 <s:iterator> 태그를 사용하여 콜렉션을 반복 할 수 있습니다. JSP 2.0 이후 documentation

정도 당신은 HTML이나 CSS를 함께 할 수 없다로서 당신은 당신의 질문에 추가 한 태그를 변경해야 ${b.price} 대신 <%=b.price()%>

를 작성할 수 있습니다.

관련 문제