2010-10-28 6 views
12

J'ai un contrôleur lié à l'URL: "/ ruleManagement".Spring MVC: problèmes d'URL relatifs

A l'intérieur de mon JSP, j'ai un formulaire qui transmet (sur submit) à l'URL "ruleManagement/save". Quand il y a des erreurs avec les champs de saisie, je veux qu'il retourne le formulaire d'origine View. C'est là que le problème commence ...

Problème 1) Maintenant que l'URL est "/ ruleManagement/save", mon formulaire de soumission pointe maintenant vers "/ ruleManagement/ruleManagement/save".

Problème 2) J'ai essayé d'utiliser spring: url tag pour générer les chemins absolus pour moi, ce qui fonctionne généralement bien. Mais quand je mets une balise spring: url à l'intérieur d'une balise, la balise spring: url n'est pas correctement analysée.

<form:form action="<spring:url value='/ruleManagement/save' ...>" method="post"> 

Lorsque j'analyse les DOM après le chargement de la page, mon étiquette de forme ressemble à quelque chose comme:

<form action='<spring:url value="/ruleManagement/save" />' ... > 

Si je n'utilise pas le printemps: balise URL, et au lieu juste «/ruleManagement/save ", l'URL générée exclut le nom de mon application dans l'url, ce qui est également faux.

Comment générer un modèle d'URL cohérent sur toutes les vues, quel que soit le chemin? Si la réponse est "using spring: url", comment puis-je obtenir ce contenu à l'intérieur d'un formulaire: tag de formulaire?

+0

Si vous êtes juste essayer de contrôler la base pour le parent URL, pourquoi ne pas utiliser la balise ''? – usethe4ce

Répondre

23

Les balises personnalisées dans JSP ne peuvent pas être utilisées dans les attributs d'autres balises personnalisées. Vous devez donc stocker le résultat intermédiaire dans un attribut de requête (en utilisant var pour rediriger la sortie de la balise vers l'attribut de requête est un idiome commun pris en charge par beaucoup de balises):

<spring:url var = "action" value='/ruleManagement/save' ... /> 
<form:form action="${action}" method="post"> 
+0

parfait merci! – Corey

3

J'aimerais aussi être capable de générer un chemin d'URL cohérent à travers toutes les vues! Est-ce possible avec <spring:url .../>.

Pour répondre à votre deuxième question & virement de bord sur la réponse de axtavt, intégrer le <spring:url ... /> dans l'action de forme après avoir ajouté la propriété htmlEscape="true"

Exemple: <form:form action="<spring:url value="/ruleManagement/save" htmlEscape="true" .../>" method="post">