2010-10-28 85 views
12

我有一個控制器綁定了URL:「/ ruleManagement」。Spring MVC:相對URL問題

在我的JSP裏面,我有一個表單(提交時)轉發到「ruleManagement/save」url。當輸入字段出現錯誤時,我希望它返回原始窗體View。這是問題開始的地方...

問題1)現在,URL是「/ ruleManagement/save」,現在我的表單提交指向「/ ruleManagement/ruleManagement/save」。

問題2)我嘗試使用spring:url標記爲我生成絕對路徑,這通常效果很好。但是,當我在標記中放入spring:url標記時,spring:url標記無法正確解析。

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

當我在頁面加載後分析DOM,我的表單標籤看起來像:

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

如果我不使用彈簧:URL標記,而不是僅僅用「/ ruleManagement /保存「,生成的url排除我的應用程序名稱在url中,這也是錯誤的。

如何在所有視圖中生成一致的URL模式,而不管路徑如何?如果答案是「使用spring:url」,我該如何在form:form標籤中獲取該內容?

+0

如果你只是試圖控制相對基地網址,爲什麼不使用''標籤? – usethe4ce 2012-07-26 00:12:19

回答

23

JSP中的自定義標記不能用於其他自定義標記的屬性,因此您需要將中間結果存儲在請求屬性中(使用var將標記的輸出重定向到請求屬性是一種常見的慣用語很多標籤):

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

非常感謝! – Corey 2010-10-29 18:53:04

3

我也希望能夠在所有視圖中生成一致的URL路徑!這可能與<spring:url .../>

要回答套結上axtavt的回答你的第二個問題&,嵌入<spring:url ... />到表單操作所添加的屬性後htmlEscape="true"

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