2011-01-10 9 views
2

Ich habe eine App, die bei http://serverA/m/ oder http://serverA/mobile/ laufen kann. Ich habe eine gemeinsame Kopfzeile mit einem Suchformular, das zu http://serverA/Installation Name/Suche gehen muss.Wie erhalten wir den absoluten Pfad zum Anwendungsstammverzeichnis mit Spring?

Allerdings, wenn ich <form action="/search"> verwende geht es an die Wurzel des Servers, nicht die Tomcat-Anwendung.

Wenn ich <form action="search"> verwende geht es auf einen Pfad relativ zur aktuellen Seite. (Dh http://serverA/m/someOtherPage/search

Ich habe versucht, <c:url value="search"> und <c:url value="/search"> aber keiner von ihnen scheint zu funktionieren.

In IntelliJ, <c:url value="/search"> gibt mir „Kann Controller URL nicht auflösen/search“ obwohl ich einen Controller haben mit @RequestMapping definiert ("/ search")

+0

Wie haben Sie Ihre Suche URL vorbereiten? Hast du es direkt im href-Attribut von Hand geschrieben? Was ist dein href? Verwenden Sie irgendwelche Taglibs? Verwenden Sie Spring-Mvc mit Jsp oder anderen View Frameworks? –

Antwort

7
<form action="<c:url value="/search" />" /> 

<c:url> Mit der Art und Weise ist. Ignorieren Sie, was die IDE sagt. Sie sind dabei nicht gut. probieren Sie es laufen.

+0

Tut mir leid, anscheinend habe ich nicht das Thmnl bezeichnet, also versuchte ich zu rendern:/mein Schlechter. –

+0

@Zachary Spencer siehe aktualisiert – Bozho

+0

Dies funktioniert immer noch nicht, ich werde es mit dwbs answe kombinieren und sehen, was ich mit –

4

Bozho hat Recht. Ich habe zu HTML BASE-Tag verwendet:

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/" /> 

Wenn Sie diesen Tag an wenigen Stellen setzen können (idealerweise nur in einer JSP) Sie Ihren Code sauberer bekommen.

+0

+1 für eine nette Verwendung eines Base-Head-Tags, Sinuhe! –

2

Sie können (abgesehen von den Hinweisen anderer Responder) auch das Spring-JSP-Tag (spring: url) verwenden, das dem JSTL-Tag c: url nachempfunden ist (siehe Antwort von Bozhos). Die TLD Referenz:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/spring.tld.html#spring.tld.url

Und der Boden dieser mvc: Ressourcen-Block für ein Beispiel Verwendung:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-static-resources

0

Sie nicht in der Lage sein, den c einzubetten: url Tag direkt in das Attribut, wenn Ihr Formular-Tag ein JSP-Tag ist (vielleicht < sf: form >).

In dieser Situation, die ich wie folgt vorgehen:

<c:url var="someName" value="some uri value"/> 
<sf:form path="${someName}" ...>
Verwandte Themen