Struts2锚标记不包括contextPath

2024-01-31

%{#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>

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

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

Thanks!


这应该有效:

<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> tag:

<%-- 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>

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

<s:form method="post" action="submitme" theme="simple"></s:form>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2锚标记不包括contextPath 的相关文章

随机推荐