将href链接放入Struts2 set标记中

时间:2011-10-22 20:18:50

标签: tags struts2 escaping struts

我想将一个锚标记放入一个Struts2变量中,然后我可以在JSP中的各个点显示它。这样我就可以避免重复用于构建各种形式的href标记的复杂的if / then语句。

我正在使用Struts的:set'标签来执行此操作。

问题是Struts会转换'<'字符到htmlentities,当页面显示时,我看到显示的是实际的“a href = someURL”标签,而不是工作链接。

如果我将“escape ='true'”参数添加到s:set它会做同样的事情,只显示'<'的htmlentities和'>'标签

如何将有效的锚标记放入Struts2变量中,然后将其显示为工作链接?

这就是我正在做的事情:

<s:set name="composerName">

<s:property value="'a href=%{viewRecordURL}>'" escape="false"/>

<s:property value="#composer.title" />

<s:property value="#composer.firstName" />

<s:property value="#composer.lastName" />

<s:property value="'</a>'" escape="false" />

</s:set>

6 个答案:

答案 0 :(得分:1)

使用s:url创建有效的网址,然后在s:a中使用它来生成链接。

您可以参考以下链接了解更多详情:

http://struts.apache.org/2.1.8/docs/a.html

答案 1 :(得分:0)

这不是你想要构建它的方式 - 你拥有的是两个不同的东西,一个URL,以及那个url的文本字符串。您已有的网址。仅使用<s:set>作为链接文字。

如果你真的需要,你可以把它包装成一个基于JSP的自定义标签,但我不会打扰。

答案 2 :(得分:0)

我会回答我自己的问题。也许其他人有一个更优雅的解决方案。再一次,我们试图将一个锚标记和一个url都放入一个s:set变量中。问题是两个:1)获取s:设置将标记字符串视为文字字符串而不是Object(它想要从ActionContext或某处获取),以及2)关闭转义以使锚点的字符串文本标签不会转换成像'&amp;的'htmlentities LT;”

对于1,我将var设置为null,但提供了一个默认参数,其中s:property始终视为文字字符串。

对于#2,只需在正确的位置使用escape =“false”。

不幸的是,字符串必须使用单独的s:property来构建,但你能做什么?

<s:set name="composerName" >
    <s:property value="" default="<a href=" escape="false"/> 
    <s:property value="" default="'" />
    <s:property value="%{viewRecordURL}" escape="true"/>
    <s:property value="" default="'>" escape="false" />
    <s:property value="#composer.title" />
    <s:property value="#composer.firstName" />
    <s:property value="#composer.lastName" />
    <s:property value="" default="</a>" escape="false"/>
</s:set>

我还没有使用UTF-8字符测试它,或者在#composer部分使用'&amp;',撇号或单引号等可能有问题的字符进行测试。

答案 3 :(得分:0)

我们可以使用url标签创建URL,如下所述

<s:url id="hLink" action="yourStrutsActionName">
   <s:param name="propertyName" value="%{propertyName}" />
</s:url>
<td><s:a href="%{hLink}"><s:property value="%{propertyName}"/></s:a></td> 

答案 4 :(得分:0)

使用这种简单的方法在Struts2中设置链接 //在href

中添加Struts2操作
<s:a href="forgetPasswordPage.action" >Forget Password</s:a>

答案 5 :(得分:0)

我遇到了同样的问题,我只是按照以下方法解决了它:

在主bean中,我具有带有Setters和Getters的以下变量:

private int ReqNo;
private String hyperLinkToPage;

在JSP页面中,我的TD如下:

    <td class="displayValue" style="width: 10%;"><s:a href="%{hyperLinkToPage}"><s:property value="%{ReqNo}"/></s:a></td> 

我希望这会有所帮助。