<s:url> Struts2 中的命名空间属性
<s:url> namespace attribute in Struts2
我的代码是:
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a action="%{wiLink}" namespace="/myaccount"><s:property value="subject"/></s:a>
在我的应用程序中,ContextRoot 是 "pmp"。上面是生成 link as
/pmp//pmp/myaccount/work-items_input.action?ajaxRequest=true&workItemVO.workItemId=5
在上面我们可以看到上下文路径出现了两次。 /pmp//pmp... 这是错误的。如何删除一个额外的上下文路径?
从 <s:a>
标记中删除操作和名称空间属性,并使用 <s:url>
的具有 href
属性的属性:
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="/myaccount">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a href="%{wiLink}"><s:property value="subject"/></s:a>
应该够了。
以上接受的答案是绝对正确的,毫无疑问。但是我们也可以在 <s:url>
中使用 "includeContext="false"
作为替代 action 属性而不是 href。
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="/myaccount" includeContext="false">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a action="%{wiLink}" namespace=""><s:property value="subject"/></s:a>
由于 & 的原因它不起作用,因此您必须将所有出现的地方替换为 &。
<td align="right">
<s:url action="collectionSummary" var="csUrl">
<s:param name="collectionSummary.name">
<s:property value="debtCase.origNameTxt"/></s:param>
<s:param name="socSecNum">
<s:property value="debtCase.socSecNum"/></s:param>
<s:param name="debtCaseId"><s:property value="debtCase.ID"/></s:param>
<s:param name="nomenu">Y</s:param>
</s:url>
<s:a href="#"
onclick="window.open(clearURL('%{csUrl}'));" <-------
title="View Collection Summary"
class="screen_link">
<s:text name="link.CollSumm"/></s:a>
</td>
function clearURL(element){
return element.replace(new RegExp('&', 'g'),"&");
}
我的代码是:
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a action="%{wiLink}" namespace="/myaccount"><s:property value="subject"/></s:a>
在我的应用程序中,ContextRoot 是 "pmp"。上面是生成 link as
/pmp//pmp/myaccount/work-items_input.action?ajaxRequest=true&workItemVO.workItemId=5
在上面我们可以看到上下文路径出现了两次。 /pmp//pmp... 这是错误的。如何删除一个额外的上下文路径?
从 <s:a>
标记中删除操作和名称空间属性,并使用 <s:url>
的具有 href
属性的属性:
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="/myaccount">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a href="%{wiLink}"><s:property value="subject"/></s:a>
应该够了。
以上接受的答案是绝对正确的,毫无疑问。但是我们也可以在 <s:url>
中使用 "includeContext="false"
作为替代 action 属性而不是 href。
<s:url action="work-items_input" includeParams="get" var="wiLink" namespace="/myaccount" includeContext="false">
<s:param name="workItemVO.workItemId" value="'5'"></s:param>
</s:url>
<s:a action="%{wiLink}" namespace=""><s:property value="subject"/></s:a>
由于 & 的原因它不起作用,因此您必须将所有出现的地方替换为 &。
<td align="right">
<s:url action="collectionSummary" var="csUrl">
<s:param name="collectionSummary.name">
<s:property value="debtCase.origNameTxt"/></s:param>
<s:param name="socSecNum">
<s:property value="debtCase.socSecNum"/></s:param>
<s:param name="debtCaseId"><s:property value="debtCase.ID"/></s:param>
<s:param name="nomenu">Y</s:param>
</s:url>
<s:a href="#"
onclick="window.open(clearURL('%{csUrl}'));" <-------
title="View Collection Summary"
class="screen_link">
<s:text name="link.CollSumm"/></s:a>
</td>
function clearURL(element){
return element.replace(new RegExp('&', 'g'),"&");
}