2010-10-28 18 views
12

Tengo un controlador vinculado a la URL: "/ ruleManagement".Spring MVC: problemas relativos de URL

Dentro de mi JSP, tengo un formulario que reenvía (en el envío) a la URL "ruleManagement/save". Cuando hay errores con los campos de entrada, quiero que devuelva la forma original Vista. Aquí es donde comienza el problema ...

Problema 1) Ahora que la URL es "/ ruleManagement/save", mi formulario de envío ahora apunta a "/ ruleManagement/ruleManagement/save".

Problema 2) Intenté usar la etiqueta spring: url para generar las rutas absolutas para mí, que generalmente funciona muy bien. Pero cuando pongo una etiqueta spring: url dentro de una etiqueta, la etiqueta spring: url no se analiza correctamente.

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

Cuando analizo el DOM después se carga la página, mi forma de etiqueta se ve algo como:

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

Si yo no uso la primavera: la etiqueta del URL, y en lugar de utilizar simplemente "/ ruleManagement/save ", la url generada excluye el nombre de mi aplicación en la url, lo cual también es incorrecto.

¿Cómo puedo generar un patrón de URL consistente en todas las vistas, independientemente de la ruta? Si la respuesta es "using spring: url", ¿cómo obtengo ese contenido dentro de un formulario: etiqueta de formulario?

+0

Si usted está tratando de controlar la base para el pariente URL, ¿por qué no utilizar la etiqueta ''? – usethe4ce

Respuesta

23

Las etiquetas personalizadas en JSP no se pueden utilizar en atributos de otras etiquetas personalizadas, por lo que debe almacenar el resultado intermedio en un atributo de solicitud (utilizando var para redirigir la salida de la etiqueta al atributo de solicitud es una expresión común compatible con muchas etiquetas):

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

gracias perfectos! – Corey

3

¡Me encantaría poder generar una ruta de URL consistente en todas las vistas! Es posible con <spring:url .../>.

para responder a su segunda pregunta & viradas en la respuesta de axtavt, incrustar el <spring:url ... /> a la acción del formulario después de añadir la propiedad htmlEscape="true"

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