Struts2

时间:2015-08-31 12:25:15

标签: jsp url struts2 struts-tags

我的代码是:

<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”。以上是生成链接

  

/ PMP // PMP /myaccount/work-items_input.action?ajaxRequest=true&workItemVO.workItemId=5

以上我们可以看到上下文路径来了两次。 / pmp // pmp ... 这是错误的。如何删除一个额外的上下文路径?

3 个答案:

答案 0 :(得分:1)

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

这应该足够了。

答案 1 :(得分:0)

以上接受的答案绝对是正确的,毫无疑问。但我们也可以"includeContext="false"使用<s:url>作为操作属性的替代,而不是 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>

答案 2 :(得分:0)

由于&amp;所以你必须将所有出现的内容替换为&amp ;.

<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('&amp;', 'g'),"&");
}