2009-05-27 10 views
1

Si je mets un objet nommé « foo » dans le modèle dans le contrôleur de printemps, et que vous souhaitez limiter son champ d'application, comment puis-je faire cela.La limitation du champ d'application d'un modèle JSP

Disons que j'ai une page qui utilise une balise jsp qui prend comme paramètre « foo ». Si j'appelle l'étiquette à l'intérieur de jsp, comme <tag foo="${bar}" />, il me semble que le modèle "foo" interfère avec la "barre".

Ou même si non, si je veux juste limiter la portée du modèle "foo" pour être accessible uniquement dans la page jsp, et pas dans d'autres (soit dans la page ed ou dans un tag que jsp appels première page.

Répondre

1

Fondamentalement, vous ne pouvez pas restreindre l'étendue. La seule façon de passer des objets d'un contrôleur à la vue est via les attributs de portée de requête.

Si vous avez beaucoup de différentes vues/contrôleurs pour une seule page, vous pouvez avoir une convention de nommage pour votre demande attributs, quelque chose comme le nom de la classe du contrôleur. Le seul problème est que les accès ne sont pas si propre

${requestScope['com.your.app.Controller.RESULT']} 

Un possible est d'utiliser pour créer des versions de portée de la page des variables:

<c:set var='result' value="${requestScope['com.your.app.Controller.RESULT']}"/> 
... 
${result} 

Dans votre exemple, je ne suis pas sûr que je dirais que «foo» interfère avec «bar», il semble que vous passez la barre à l'étiquette en tant que paramètre?

+0

Merci. Dans l'exemple, oui, je passe la barre en paramètre. Mais dans le tag je reçois le "modèle foo", pas la barre, comme la valeur liée au "paramètre foo". Au moins, j'ai eu des problèmes avec le nom qui s'affrontait dans le passé. Je ne suis pas sûr si j'ai juste eu un autre problème, mais je pense que le paramètre de requête "foo" remplace le paramètre de balise "foo" dans les balises. – egaga

+0

Je pense qu'il y a peut-être eu un autre problème, les paramètres de requête ne seront pas passés à n'importe quoi sauf si vous leur demandez spécifiquement d'être via une expression EL. –