【问题标题】:Spring MVC: Relative URL problemsSpring MVC:相对 URL 问题
【发布时间】:2011-05-02 00:04:28
【问题描述】:

我有一个控制器绑定了 URL:“/ruleManagement”。

在我的 JSP 中,我有一个表单(在提交时)转发到“ruleManagement/save”网址。当输入字段出现错误时,我希望它返回原始表单视图。这就是问题的开始......

问题 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" />' ... >

如果我不使用 spring:url 标签,而只使用“/ruleManagement/save”,则生成的 url 会在 url 中排除我的应用程序名称,这也是错误的。

无论路径如何,如何在所有视图中生成一致的 URL 模式?如果答案是“使用 spring:url”,我如何在 form:form 标签中获取该内容?

【问题讨论】:

  • 如果您只是想控制相对 URL 的基础,为什么不使用 &lt;base&gt; 标签?

标签: java spring jsp spring-mvc jstl


【解决方案1】:

JSP中的自定义标签不能用在其他自定义标签的属性中,所以需要将中间结果存储在请求属性中(使用var将标签的输出重定向到请求属性是常用的惯用语支持通过许多标签):

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

【讨论】:

    【解决方案2】:

    我也希望能够在所有视图中生成一致的 URL 路径! &lt;spring:url .../&gt; 有可能吗?

    要回答您的第二个问题并继续回答 axtavt 的答案,请在添加属性 htmlEscape="true" 后将 &lt;spring:url ... /&gt; 嵌入到表单操作中

    示例:&lt;form:form action="&lt;spring:url value="/ruleManagement/save" htmlEscape="true" .../&gt;" method="post"&gt;

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      相关资源
      最近更新 更多