%{#request.contextPath}在Struts2的s:a标记内不起作用。(具体来说是Struts 2.2.1。)是否有使其工作的方法?它可以在其他Struts2标签中使用。
%{#request.contextPath}
这是Struts 2项目的JSP文件中的两行,其上下文路径为“ / websites”:
<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标记中不允许使用。此外,我正在努力保持一致。而且我还尝试避免${}这种情况,因为它不会自动转义输出。
${#pageContext.request.contextPath}
${}
谢谢!
这应该工作:
<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>标记:
<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>