2010-06-01 19 views
11

Estoy intentando crear un conjunto de etiquetas personalizadas que encapsulen elementos de formulario (marcado y validación).Acceso al objeto Solicitud desde etiquetas JSP personalizadas

Hay un método dado para recuperar el objeto "hacia fuera" fácilmente:

JspWriter out = getJspContext().getOut(); 

sin embargo no puedo encontrar la manera de conseguir el objeto de solicitud. Deseo poder acceder directamente a los valores de formulario enviados desde la clase Tag para poder validar cada campo.

El documentation es bastante escaso, así que pensé que tal vez podría usar el objeto JspContext para obtener de algún modo los atributos de solicitud. Pero no entiendo los diferentes ámbitos.

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

siempre imprime "nulo".

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

bucle a través e imprimir la enumeración sólo me da una lista de las clases que no existe:

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 

Así es esto posible?

Si no, ¿alguien podría indicarme una biblioteca de etiquetas que se ocupa de la visualización y validación de formularios? Busqué en Internet durante un par de horas y parecía que cada uno de ellos se suspendió y no pude descargarlos. O eso o sugerir una mejor alternativa para el manejo de formularios.

Editar: Las etiquetas extienden la clase SimpleTagSupport.

+0

¿Qué clase extiende con su clase de etiqueta? – Fil

+0

SimpleTagSupport –

Respuesta

13

Si su clase extiende TagSupport, puede acceder a la variable pageContext protegida. De eso puedes recuperar el objeto de solicitud.

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

+1

¿Hay alguna manera de hacerlo desde una clase que extiende SimpleTagSupport? –

+2

Si necesita acceder a más de los atributos de la etiqueta, debería considerar extender TagSupport. ¿Hay alguna razón por la que estás evitando esto? "JspContext sirve como clase base para la clase PageContext y abstrae toda la información que no es específica de los servlets. Esto permite que las extensiones de etiquetas simples se utilicen fuera del contexto de un Servlet de solicitud/respuesta". Desde Sun: http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/JspContext.html – Fil

+2

Alternativamente, puede convertir su JspContext en un PageContext. Descrito aquí, http://stackoverflow.com/questions/2098796/how-to-access-request-in-jsptags. – Fil

Cuestiones relacionadas