2010-08-04 3 views
7

주어진 bean 속성의 값을 주어진 목록의 각 객체에서 그 이름과 함께 읽는 사용자 정의 JSPX 태그를 작성하려고합니다. JSP 속성으로 태그에 전달 된 속성. 태그는 다음과 같이 보일 것입니다 :속성 이름 자체가 동적 변수 인 경우 bean 속성의 값을 얻는 방법

<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" 
     xmlns:jsp="http://java.sun.com/JSP/Page" 
     version="2.0"> 
    <jsp:output omit-xml-declaration="yes"/> 

    <jsp:directive.attribute name="items" type="java.lang.Iterable" 
     required="true" description="The items whose properties are to be read" 
     rtexprvalue="true"/> 
    <jsp:directive.attribute name="propertyName" type="java.lang.String" 
     required="true" description="The name of the bean property to read" 
     rtexprvalue="true"/> 

    <c:forEach items="${items}" var="item"> 
     <!-- This is the bit that doesn't work --> 
     <jsp:getProperty name="item" property="${propertyName}" /> 
    </c:forEach> 

</jsp:root> 

문제는 jsp:getProperty 태그의 property 속성이 표현 만 리터럴 값을 허용하지 않는 것이다. (I 런타임까지 속성 이름을 알고하지 않는) 그래서이 작동,하지만 나에게 아무 소용이 없다 : 내가 얻을

<jsp:getProperty name="item" property="firstName" /> 

오류 : 어떤 도움

org.apache.jasper.JasperException: org.apache.jasper.JasperException: 
PWC6054: Cannot find any information on property '${propertyName}' in 
a bean of type 'com.example.FooBar' 

감사합니다.

답변

14

동적 속성 이름을 사용하려면 중괄호 표기법을 사용하십시오.

<c:forEach items="${items}" var="item"> 
    ${item[propertyName]} 
</c:forEach> 
+0

전설! 대단히 감사합니다. –

+0

이러한 모든 표기법에 대한 참조 가이드가 있습니까? –

+1

당신을 진심으로 환영합니다. 예, Java EE 자습서의 Unified EL 장을 확인하십시오. 특히이 부분은 [값 식을 사용한 객체 속성 참조] (http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html#bnahx)에서 설명합니다. – BalusC

관련 문제