2010-06-01 3 views
11

Je tente de créer un ensemble de balises personnalisées qui encapsulent des éléments de formulaire (annotation et validation).Accès à un objet de requête à partir de balises JSP personnalisées

Il y a une méthode donnée pour récupérer l'objet « Out » facilement:

JspWriter out = getJspContext().getOut(); 

Cependant, je ne peux pas comprendre comment obtenir l'objet de la demande. Je veux être en mesure d'accéder directement aux valeurs de formulaire soumises à partir de la classe Tag afin que je puisse valider chaque champ. Le documentation est assez clairsemé, donc j'ai pensé que je pourrais peut-être utiliser l'objet JspContext pour obtenir les attributs de la demande. Mais je ne comprends pas les différentes portées.

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

affiche toujours "null".

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

Looping à travers et imprimer l'énumération me donne juste une liste des classes qui n'existent pas:

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 

Alors est-ce même possible? Si non, quelqu'un pourrait-il me diriger vers une bibliothèque de balises traitant de l'affichage et de la validation des formulaires? J'ai cherché sur Internet pendant quelques heures et il semblait que chacun d'entre eux avait été interrompu et je ne pouvais pas les télécharger. Soit cela ou suggérer une meilleure alternative pour la manipulation des formulaires.

Modifier: Les balises étendent la classe SimpleTagSupport.

+0

Quelle classe étendez-vous avec votre classe d'étiquettes? – Fil

+0

SimpleTagSupport –

Répondre

13

Si votre classe étend TagSupport, vous pouvez accéder à la variable pageContext protégée. De cela, vous êtes en mesure de récupérer l'objet de demande.

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

+1

Existe-t-il un moyen de le faire à partir d'une classe qui étend SimpleTagSupport? –

+2

Si vous avez besoin d'accéder à plus que les attributs de la balise, vous devriez envisager d'étendre TagSupport. Y a-t-il une raison pour laquelle vous évitez cela? "JspContext sert de classe de base pour la classe PageContext et extrait toutes les informations qui ne sont pas spécifiques aux servlets, ce qui permet d'utiliser des extensions de balises simples en dehors du contexte d'une servlet requête/réponse." Depuis Sun: http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/JspContext.html – Fil

+2

Vous pouvez également convertir votre JspContext en un PageContext. Décrit ici, http://stackoverflow.com/questions/2098796/how-to-access-request-in-jsptags. – Fil

Questions connexes