2012-03-02 15 views
0

HelloTag.Java JSP 파일에서스위치 문/반복

public class HelloTag extends SimpleTagSupport { 

@Override 
public void doTag() throws JspException, IOException { 
    JspWriter out = getJspContext().getOut(); 

    ArrayList outerList = new ArrayList(); 
    ArrayList innerList = null; 
    for (int i = 0; i < 5; i++) { 
     innerList = new ArrayList(); 
     innerList.add("1"); 
     innerList.add("Name"); 
     outerList.add(innerList); 
    } 
    for (int i = 0; i < outerList.size(); i++) { 
     for (int j = 0; j < innerList.size(); j++) { 
      out.println(innerList.get(j)); 
     } 
    } 
} 
} 

, 코드가 다음입니다 :

<body> 
    <ct:Hello></ct:Hello> 
</body> 

나는 JSP를 실행하면 파일,이 파일은 정확한 결과를 보여줍니다; 하지만

나는 위의 코드는 단지 예 위해서입니다

같은

<c:set var="name" scope="" value=""/> 
<c:choose> 
<c:when test="${name == 1}"> 
    This is Your ID:- 
</c:when> 
<c:otherwise> 
    This is Your Name 
</c:otherwise> 
</c:choose> 

로 사용자 정의 태그 클래스에서 오는 모든 값의 결정을 내려야합니다. 어떻게 사용자 정의 태그 클래스를 형성 각 값에 결정을 내게 업데이 트하십시오. 내 문제를 설명하는

다른 방법은 내가 변수의 모든 값을 저장 한 다음 바로 Scriplet 태그 (HelloTag.Java)

위의 시나리오에 초점없이 JSTL을 사용하여 해당 값에 대한 결정을 먹고 싶어한다는 것입니다
+0

내가 아는 한, SimpleTagSupport 당신이 다음는 BodyTagSupport – Dapeng

+0

친애하는 @Dapeng를 사용할 필요가 비슷한을 구현하는 경우, JSP의 몸 콘텐츠를 허용하지 않습니다, I 예제와 함께 해결책을 찾는다. –

답변

2

당신이 무엇을 요구하는지는 분명치 않습니다. 그러나 태그는 그대로 외부 목록의 각 내부 목록을 반복합니다 (사실, 그렇게해야한다고 생각합니다. 그러나 버그가 있기 때문에 그렇지 않습니다).

JSTL <c:forEach> 태그가이를 수행하기 때문에 사용자 정의 태그가 필요하지 않습니다. 당신이 요청에 저장 outerList (또는 페이지, 또는 세션 또는 응용 프로그램)가 가정 속성 :

질문에서
<%-- iterate through the outer list --%> 
<c:forEach var="innerList" items="${outerList}"> 
    <%-- iterate through the innerList --%> 
    <c:forEach var="element" items="${innerList}"> 
     <%-- do what you want with the element --%> 
    </c:forEach> 
</c:forEach> 

, 당신이 비록 내부 목록이없는 것을 나에게 보인다. 오히려 바깥 쪽 목록에는 getId()getName() 메서드가있는 객체 (예 : Person 클래스의 인스턴스)가 포함되어야합니다. 루프 따라서 다음과 같습니다

<%-- iterate through the outer list --%> 
<c:forEach var="person" items="${personList}"> 
    ID : ${person.id}<br/> 
    Name : <c:out value="${person.name}"/> 
</c:forEach>