我在Spring框架的JSP页面上使用<form:form>
。
当我查看生成的页面时,我看到<form action="[the path of my page]">
。
action="[the path of my page]"
会自动添加。
我理论上可以手动编辑每个<form>
以添加action=""
所需属性(编辑,使用类似${root}
的内容在gerrytan的答案中) ,但这不是一个实际的选择。
编辑:我不能假设/
是根路径,因为它会不断变化,因为它会在代理后面。)
如何改变这种自动&#34;行为&#34;,所以我在[我的页面路径]的开头连接一条路径?
答案 0 :(得分:2)
以下是我见过的两种常用方法,以及它们的优点和缺点:
始终假设上下文路径为/
你会放<form:form action="/controller1/path1"
。这种方法的好处是,无论用于为页面提供服务的路径如何,URL始终引用一致的位置。但是,这意味着您的应用程序已部署到/
上下文路径中。如果你不得不改变它(例如:由于反向代理/负载均衡器),那么你必须做大量的查找/替换
始终使用隐式变量
查找上下文路径这是我的首选方法。首先定义一个jsp变量,如下所示:
<c:set var="root" value="${pageContext.request.contextPath}"/>
每当您必须引用内部路径时,请使用${root}
<form:form action="${root}/controller1/path1" ...
这种方法的缺点是必须在每个页面上声明变量${root}
。但是当您更改上下文根时,请确保所有引用仍然正确
您也可以使用<spring:url>
或<c:url>
作为替代方案,甚至更好use HandlerInterceptor
to make the root
attribute available automatically on all views
修改强>
似乎${pageContext.request.servletPath}
正是您正在寻找的
答案 1 :(得分:0)
我将手动更改所有表单 我将在每个JSP页面之前调用某种过滤方法填充$ {fullPathUrl}。