%{#request.contextPath}
在s:Struts2中的标记内部不起作用。 (Struts 2.2.1具体。)有没有办法让它工作?它适用于其他Struts2标记。
以下是Struts 2项目中JSP文件中的两行,其上下文路径为“/ sites”:
<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>
请注意,上下文路径不在锚点之内,但包含在表单中。
P.S。我不能在这里使用${#pageContext.request.contextPath}
因为Struts2标记中不允许使用${}
。此外,我试图保持一致。我也会尝试避免${}
,因为它不会自动转义输出。
谢谢!
答案 0 :(得分:1)
Struts 2是否支持EL
?
如果确实如此,您可以使用${request.contextPath}
。
答案 1 :(得分:1)
这应该有效:
<s:set id="contextPath" value="#request.get('javax.servlet.forward.context_path')" />
<s:a href="%{contextPath}/clickme" theme="simple">Click here.</s:a>
但是,你不应该这样做。如果您需要网址,请使用<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>