2012-07-24 6 views
0

문자열 배열이있는 양식 클래스가 있습니다. 문자열 배열의 값을 설정하고 있습니다. 이 배열 값을 JSP 페이지에서 하나씩 출력해야합니다. 내가 작성한 코드는 다음과 같습니다 Java 클래스에서 JSP로 StringArray 값을 인쇄하십시오.

paxList = getPaxList(id); 

List<String> passengerName = new ArrayList<String>(); 
List<Double> passengerAge = new ArrayList<Double>(); 

for(int i=0; i < paxList.size(); i++){ 
    passengerName.add(paxList.get(i).getPassengerName()); 
    passengerAge.add(paxList.get(i).getPassengerAge()); 
} 

bookingsForm.setPassengerName(passengerName.toArray(new String[paxList.size()])); 
bookingsForm.setPassengerAge(passengerAge.toArray(new Double[paxList.size()])); 

지금 나는 PassengerName의 값을 인쇄해야합니다.

내 JSP 페이지

<logic:iterate id="currentPassName" property="passengerName" > 
    <bean:write name="currentPassName" /> 
</logic:iterate> 

이 같은 시도했지만이 나를 위해 작동하지 않습니다. 누군가 나를 인도 할 수 있을까? JSTL로

답변

2

당신은 이름과 나이의 두 목록에 승객의 목록을 분할하지 않아야합니다. 그것이 어려운 일입니다. 직접 paxList을 양식에 직접 저장하십시오.

이 작업이 완료되면, 자신에게 부탁을하고 사용되지 않는 스트럿 논리와 빈 태그가 아닌 JSTL을 사용

<logic:iterate id="passRecord" property="passengerName" > 
    <bean:write name="passengerName" property="passRecord" /> 
</logic:iterate> 
: 그대로 작동하지 않는 이유

<c:forEach items="${bookingsForm.paxList}" var="passenger"> 
    Passenger <c:out value="${passenger.name}" is aged ${passenger.age}<br/> 
</c:forEach> 

설명하기를

위의 코드는 passengerName 배열의 요소 (여러 개가 있으므로 passengerNames이어야 함)의 요소를 반복하며 루프 내에서 사용해야하는 passRecord이라는 페이지 속성을 정의합니다.

passengerName은 문자열 배열이므로 passRecord은 문자열입니다. 루프 내부에서 passRecordpassengerName 속성에 액세스하려고합니다. getPassRecord()String[]에 없습니다. 승객 이름은 passRecord에 저장됩니다. 당신은 단지 그것을 써야만합니다. 적절하게 명명 된 변수를 사용하면 훨씬 더 명확 해집니다.

<logic:iterate id="currentPassengerName" property="passengerNames" > 
    <bean:write name="currentPassengerName" /> 
</logic:iterate> 
+0

멋진 설명. 감사합니다 –

+0

@ Nizet, 여기는 JSTL을 사용할 수 없습니다. 내 풍경은 이제 약간 복잡해. 기록이 없으면 승객 이름 입력란을 제공해야하며 기록이 있으면 같은 입력란에 기록해야합니다. 이 방법을 시도했습니다. –

+0

<논리 : notEmpty name = "passRecord"property = "passengerList"> <논리 : iterate id = "passRecord"property = "passengerList"type = "com.abhibus.oprs.pojo.booking. PassengerInformation "> <로직 : 빈 이름 ="passRecord "속성 ="passengerList "><입력 유형 = 255 "size ="15 "class ="requiredfield "/> 하지만 여전히"텍스트 "name ="passengerName "id ="passengerName <% = (RequestType + i) %> 올바른 솔루션을 찾을 수 없습니까? –

0

당신은 다음과 같이 somethign 할 수있는 :

<table> 
    <c:forEach var = "oneName" items = "${passengerName}" > 
    <tr><td> ${oneName}</td</tr> 
    </c:forEach> 
</table> 
관련 문제