2009-04-17 2 views
3

그래서 나의 JSP의 참고 도서뿐만 아니라, 내가 웹에서 찾을 수있는 모든 다른 기준이에 따라, 나는 같은 것을 할 수 있어야 해요 : 사람이 속성을 사용하는 경우 다음JSP 태그 파일에서 동적 속성을 작동 시키려면 어떻게해야합니까?

<%@ tag dynamic-attributes="dynamicAttributesVar" %> 

및 그 본인은 "dynamicAttributesVar"지도에서 해당 속성에 액세스 할 수 있어야합니다, 속성 지침에서 정의하지 않았다 그러나

<%= dynamicAttributesVar.get("someUnexpectedAttribute") %> 

전혀 작동하지 않습니다; 시도 할 때 "dynamicAttributesVar를 확인할 수 없습니다."오류가 발생합니다.

지금, 나는 "해킹"수 (태그의 생성 된 Java 클래스를보고) 발견 않은 작업 동적 수행하여 변수를 속성 :

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %> 

을 자, 해킹이 작동하지 않습니다 내 태그 지시문에도 dynamic-attributes 매개 변수를 사용하지 않으면 매개 변수가 인 것 같습니다..

하지만 내가 알고 싶은 것은, 거기에있는 다른 모든 JSP 사용자가하는 일을 어떻게 할 수 있습니까?

답변

4

"dynamicAttributesVar"는 동적 속성이 삽입 된 페이지 컨텍스트의 키 이름이 아닙니까?

(면책 조항이
Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar") 

: 당신이 스크립틀릿 사용해야하는 경우 그래서 당신은

<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/> 

을하거나 수있는 직접 자바 구현과 태그에 나는 그것을 시도하지 않은, 그냥 사용했습니다 동적 속성을 .. 하지만 합리적으로 보입니다.)

+0

아, 훨씬 더 의미가 있습니다! 약간의 수정을 가해서 제안이 효과가있었습니다 (pageContext.get 대신 jspContext.getAttribute를 사용해야했습니다). 무리 감사!! – machineghost

+0

아, 그 대답을 업데이트하겠습니다. 내가 쓴 이후로 꽤 오래되었습니다. – araqnid

5

4 살짜리 질문에 답하기위한 배지를 얻으려고합니다.

나는이 문제도 가지고 있으며 O'Reilly에서 약간의 도움을 통해 스크립틀릿 대신 JSTL을 사용했습니다.

원래 포스터는 모든 키/값을 얻기 위해이 코드를 사용할 수도 :

<c:forEach items="${dynamicAttributesVar}" var="a"> 
${a.key}="${a.value}" 
</c:forEach> 

이 특정 값 얻을 것 :

<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>