我想将一个锚标记放入一个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>
答案 0 :(得分:1)
答案 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>
我希望这会有所帮助。