Якорный тег Struts2 не включает contextPath
%{#request.contextPath}
не работает внутри тега s: в Struts2. (Struts 2.2.1, чтобы быть конкретным.) Есть ли способ заставить его работать? Это работает в других тегах Struts2.
Вот две строки в файле JSP в проекте Struts 2, путь к контексту которого - "/website":
<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. Кроме того, я пытаюсь быть последовательным. И я тоже стараюсь вообще избегать ${}
так как это не автоматически выход из выхода.
Спасибо!
2 ответа
Это должно работать:
<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>
Кстати, вам не нужен контекстный путь для атрибута действия формы:
<s:form method="post" action="submitme" theme="simple"></s:form>
Поддерживает ли Struts 2 EL
?
Ты можешь использовать ${request.contextPath}
если это так....