2010-06-01 2 views
11

양식 요소를 캡슐화하는 사용자 정의 태그 세트 (마크 업 및 유효성 검증)를 작성하려고합니다. 사용자 정의 JSP 태그에서 요청 객체에 액세스

JspWriter out = getJspContext().getOut(); 

그러나 내가 요청 객체를 얻는 방법을 알아낼 수 없습니다 :

쉽게 "아웃"개체를 검색하기 위해 부여하는 방법이있다. 각 필드의 유효성을 검사 할 수 있도록 Tag 클래스 내에서 제출 된 양식 값에 직접 액세스 할 수 있어야합니다.

documentation은 매우 희소하므로 어쨌든 JspContext 개체를 사용하여 요청 속성을 가져올 수 있다고 생각했습니다. 그러나 나는 다른 범위를 이해하지 못합니다.

System.out.println(getJspContext().findAttribute("field1")); 

은 항상 "null"을 인쇄합니다.

javax.servlet.jsp.jspOut 
javax.servlet.jsp.jspPage 
javax.servlet.jsp.jspSession 
javax.servlet.jsp.jspApplication 
javax.servlet.jsp.jspPageContext 
javax.servlet.jsp.jspConfig 
javax.servlet.jsp.jspResponse 
javax.servlet.jsp.jspRequest 

그래서도 가능하다 :

Enumeration e = getJspContext().getAttributeNamesInScope(1); 

단지 나에게 존재하지 않는 클래스의 목록을 제공을 통해 반복과 열거를 인쇄?

그렇지 않다면 누구든지 양식 표시 및 유효성 검사를 다루는 태그 라이브러리를 가르쳐 주시겠습니까? 나는 몇 시간 동안 인터넷을 검색했고, 모든 것이 단종 된 것 같았고 다운로드 할 수 없었다. 그 중 하나 또는 양식을 처리하기위한 더 나은 대안을 제안합니다.

편집 : 태그는 SimpleTagSupport 클래스를 확장합니다.

+0

태그 클래스로 어떤 클래스를 확장합니까? – Fil

+0

SimpleTagSupport –

답변

13

클래스가 TagSupport를 확장하는 경우 보호 된 pageContext 변수에 액세스 할 수 있습니다. 요청 개체를 검색 할 수 있습니다.

http://java.sun.com/webservices/docs/1.5/api/javax/servlet/jsp/tagext/TagSupport.html#pageContext

+1

SimpleTagSupport를 확장하는 클래스에서이를 수행 할 수있는 방법이 있습니까? –

+2

태그의 속성 이상에 액세스해야하는 경우 TagSupport를 확장하는 것을 고려해야합니다. 당신이 이것을 피하는 이유가 있습니까? "JspContext는 PageContext 클래스의 기본 클래스로 사용되며 서블릿과 관련이없는 모든 정보를 추상화하므로 간단한 태그 확장을 요청/응답 서블릿의 컨텍스트 외부에서 사용할 수 있습니다." Sun의 경우 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/JspContext.html – Fil

+2

또는 JspContext를 PageContext로 캐스팅 할 수 있습니다. 여기에 설명되어 있습니다 (http://stackoverflow.com/questions/2098796/how-to-access-request-in-jsptags). – Fil

관련 문제