3

%{#request.contextPath}在 Struts2 中的 s:a 标记内不起作用。(具体来说是Struts 2.2.1。)有没有办法让它工作?它适用于其他 Struts2 标记。

以下是上下文路径为“/websites”的 Struts 2 项目的 JSP 文件中的两行:

<s:a href="%{#request.contextPath}/clickme" theme="simple">Click here.</s:a>
<s:form method="post" action="%{#request.contextPath}/submitme" theme="simple"></s:form>

这是输出:

<a href="/clickme">Click here.</a>
<form id="submitme" name="submitme" action="/websites/submitme" method="post"></form>

请注意,上下文路径不在锚点上,但包含在表单中。

PS 我不能${#pageContext.request.contextPath}在这里使用,因为${}Struts2 标签中不允许使用。此外,我正在努力保持一致。而且我也尽量避免${},因为它不会自动转义输出。

谢谢!

4

2 回答 2

1

Struts 2 支持EL吗?

有的话可以用${request.contextPath}。。。。

于 2010-10-18T19:14:41.137 回答
1

这应该有效:

<s:set id="contextPath"  value="#request.get('javax.servlet.forward.context_path')" />
<s:a href="%{contextPath}/clickme" theme="simple">Click here.</s:a>

但是,您不应该这样做。当你需要一个 url 时,使用<s:url>标签:

<%-- Without specifying an action --%>
<s:url id="myUrl" value="clickme" />
<s:a href="%{myUrl}" theme="simple">Click here.</s:a>

<%-- With an action --%>
<s:url id="myUrl" action="clickme" />
<s:a href="%{myUrl}" theme="simple">Click here.</s:a>

顺便说一句,您不需要表单的 action 属性的上下文路径:

<s:form method="post" action="submitme" theme="simple"></s:form>
于 2010-10-19T07:58:31.567 回答