首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

s:generator里超链接对<s:property/>解码有关问题

2012-09-13 
s:generator里超链接对s:property/解码问题s:iterator statussta href javascript:void(0) on

s:generator里超链接对<s:property/>解码问题
<s:iterator status="st">
<a href ="javascript:void(0);" onclick = "searchhcinfo(<s:property/>);">
<s:property/>
</a>
</s:iterator>
</s:generator>

直接做成超链接的方式处理,不用javascript:void(0):

因为链接的是我们的搜索引擎,要先编码然后传递过去。

该后:

<s:iterator status="st">
<a href ="http://www.huisou.com/q.html?keyword=<%=URLEncoder.encode("<s:property/>")%>&tn=" >
<s:property/>
</a>
</s:iterator>
</s:generator>

?

?

问题来了,要用Java代码解码Struts的tag标签。Java代码根本就不识别它,encode("<s:property/>")这样它只把<s:property/>当做普通的字符串解码了。而不写双引号的话,编译就报错,Java也没有这样的方法。

我想是不是要用自定义标签呢?网上看了Struts2的自定义标签不识别<s:property>,所以我就直接用了JSP的自定义标签,代码如下:

注意不能为src下的默认包


<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>util</short-name>
<uri>/util/tags</uri>
<tag>
<description>解码处理</description>
<name>encoder</name>
<tag-class>com.util.tag.EncoderTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>encodervalue</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>

?然后JSP里头部引用tld文件:

<%@ taglib uri="/util/tags" prefix="util" %>

页面里<util:encoder encodervalue="english"/><util:encoder encodervalue="中国"/>

然后就是测试,页面显示的正确的解码数据,要解决在s:generator里的超链接问题:

代码: ?<a href ="http://www.huisou.com/q.html?keyword=<util:encoder encodervalue="?<s:property/>"/>&tn=">

keyword 要传递一个编码过的数据,现在这个数据是自定义标签传递的,但是它不认识Struts2的标签。

传递测试值没有问题?a href ="http://www.huisou.com/q.html?keyword=&tn=<util:encoder encodervalue="中文"/>"> 而<s:property/>已经显示出来了数据,就是无法放到自定义标签里面执行显示,它却将<s:property/>当做一个字符串处理啦。

怎么办?Struts2里也没有给提供解码标签!无奈!

最终解决还是在后台处理,前台用了普通的s:iterator标签.

?

热点排行