将href链接放入Struts2 set标记中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将href链接放入Struts2 set标记中相关的知识,希望对你有一定的参考价值。
我想将一个锚标记放入一个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>
使用s:url
创建一个有效的URL,然后在s:a
中使用它来生成链接。
您可以参考以下链接了解更多详情:
http://struts.apache.org/2.1.8/docs/a.html
这不是你想要构建它的方式 - 你拥有的是两个不同的东西,一个URL,以及该URL的文本字符串。您已有的网址。仅使用<s:set>
作为链接文本。
如果你真的需要,你可以把它包装成一个基于JSP的自定义标签,但我不会打扰。
我会回答我自己的问题。也许其他人有一个更优雅的解决方案。再一次,我们试图将一个锚标记和一个url都放入一个s:set变量中。问题是两个:1)获取s:设置将标记字符串视为文字字符串而不是Object(它想要从ActionContext或某处获取),以及2)关闭转义以使锚点的字符串文本tag不会转换为像'&lt;'这样的htmlentities。
对于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部分中的'&',撇号或单引号等可能有问题的字符进行测试。
我们可以使用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>
这样就可以轻松地在Struts2中设置链接//在href中添加Struts2动作
<s:a href="forgetPasswordPage.action" >Forget Password</s:a>
以上是关于将href链接放入Struts2 set标记中的主要内容,如果未能解决你的问题,请参考以下文章