`
步青龙
  • 浏览: 297794 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

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

阅读更多
 本来是一个很小的问题,就是改用a标签链接一个地址而已,而链接的字符串让Struts2处理很方便,后台不用处理的那么麻烦了。问题其实是一个很简单的一个小功能。从后台取出的字符串tag即标签,标签很复杂,比如"中国 邮政","中国 邮政","中国、邮政","中国 、邮政","中国、 邮政","中国    邮政","中国-邮政","中国——邮政"基本上这样的,我知道struts的s:generator标签
最初的解码时js(不必写searchhcinfo(obj))处理代码如下:
 写道
<s:generator val="#request.messList.tags" separator=" ,、, 、,——,-,、 ">
<s:iterator status="st">
<a href ="javascript:void(0);" onclick = "searchhcinfo(<s:property/>);">
<s:property/>
</a>
</s:iterator>
</s:generator>

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

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

该后:

 写道
<s:generator val="#request.messList.tags" separator=" ,、, 、,——,-,、 ">
<s:iterator status="st">
<a href ="http://www.test.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下的默认包

 写道
public class EncoderTag extends TagSupport {
private String value = "";
private String encodervalue;

public String getEncodervalue() {
return encodervalue;
}
public void setEncodervalue(String encodervalue) {
this.encodervalue = encodervalue;
}
public String getValue() {
return value;
}
public int doStartTag() throws JspException {
if (null==encodervalue) {}else{
try {
pageContext.getOut().println(URLEncoder.encode(encodervalue));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspTagException{
return EVAL_PAGE;
}

public void setValue(String value) {
this.value = value;
}
}

 WEB-INF下创建文件夹tlds 里面创建tld文件util.tld代码如下:

 写道
<?xml version="1.0" encoding="UTF-8" ?>

<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.test.com/q.html?keyword=<util:encoder encodervalue=" <s:property/>"/>&tn=">

 

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

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

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

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

 

分享到:
评论

相关推荐

    cuteEditor6.0

    You can also create your own policy files that define arbitrary permission sets.&lt;br/&gt;&lt;br/&gt;Comparison of the sample security policy file &lt;br/&gt;&lt;br/&gt; &lt;br/&gt;Permissions/Resource Setting Admin Default ...

    generatorConfig.xml

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.3.7&lt;/version&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.postgresql&lt;/groupId&gt; ...

    struts2标签技术

    &lt;s:property /&gt;&lt;br/&gt; &lt;/s:iterator&gt; &lt;/s:generator&gt; 例2: 生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。 Generate an iterator with count ...

    ABAP examples

    Neverthless, this is a good chance to enhance your debug abilty to eliminate those errors.&lt;br/&gt;&lt;br/&gt;This book is compiled by matlab report generator and completely for free, you can share with your ...

    Hibernate关联关系映射目录

    &lt;property name="addressdetail"/&gt; &lt;/class&gt; &lt;/hibernate-mapping&gt; &lt;hibernate-mapping&gt; &lt;class name="com.lavasoft.Person" table="PERSON"&gt; &lt;id name="personid"&gt; &lt;generator class="identity"/&gt; &lt;/id&gt; ...

    Generator及使用教程.zip

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;configuration&gt; &lt;verbose&gt;true&lt;/verbose&gt; &lt;overwrite&gt;true&lt;/overwrite&gt; &lt;/...

    eclipse的maven项目中,通过mybatisgenerator工具自动生成实体类和Mapper

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.3.5&lt;/version&gt; &lt;/dependency&gt; ``` 3. **添加MySQL JDBC驱动依赖**:为了能够访问MySQL数据库,需要...

    Springboot+mybabits使用Generator插件

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;optional&gt;true&lt;/optional&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` 接下来,我们需要配置...

    Mybatis Generator自动生成代码实例(maven方式)

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` 接下来,创建一个`generatorConfig.xml`配置文件,...

    struts2标签库

    1. `&lt;s:generator separator="" val=""&gt;&lt;/s:generator&gt;`:配合`s:iterator`标签生成序列。 H部分: 1. `&lt;s:head/&gt;`:在HTML的`&lt;head&gt;`标签中使用,用于结束头文件。 2. `&lt;s:hidden&gt;&lt;/s:hidden&gt;`:创建隐藏域,用于...

    mybatis generator使用方法

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;/dependency&gt; ``` 紧接着,需要在`build/plugins`部分配置MyBatis Generator的Maven...

    struts2 标签库 帮助文档

    1. &lt;s:generator separator="" val=""&gt;&lt;/s:generator&gt;----和&lt;s:iterator&gt;标签一起使用 H: 1. &lt;s:head/&gt;-----在&lt;head&gt;&lt;/head&gt;里使用,表示头文件结束 2. &lt;s:hidden&gt;&lt;/s:hidden&gt;-----隐藏值 I: 1. &lt;s:...

    mybatisGenerator代码自动生成工具

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.mybatis....

    Maven项目逆向生成工具 自动生成数据库表的pojo对象以及mapper文件 可以免费下载无需付费

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.3.6&lt;/version&gt; &lt;configuration&gt; &lt;!--配置文件的位置--&gt; &lt;configurationFile&gt;GeneratorMapper...

    java-struts2.0经典知识点

    &lt;s:property /&gt;&lt;br/&gt; &lt;/s:iterator&gt; &lt;/s:generator&gt; &lt;!-- 生成包含前三个元素的迭代器 --&gt; &lt;s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3"&gt; &lt;s:iterator&gt; &lt;s:property /&gt;&lt;br/&gt; &lt;/s:iterator&gt; &lt;/s...

    mybatis的generator工具

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;configuration&gt; &lt;configurationFile&gt;src/main/resources/generatorConfig.xml...

    Mybatis Generator自动生成JavaEntity带中文注释和注解[Maven]工程

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.2&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.mybatis....

    struts2常用标签

    &lt;s:property value="name"/&gt; (index: &lt;s:property value="%{#status.index}"/&gt;)&lt;br/&gt; &lt;/s:iterator&gt; ``` ##### 25. `&lt;s:label&gt;` —— 标签 - **功能**:创建一个只读的标签。 - **示例**: ```xml &lt;s:label ...

    MyBatis Generator逆向工程配置详解

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;scope&gt;compile&lt;/scope&gt; &lt;/dependency&gt; ``` 然后,创建一个MBG的配置文件`...

    mybatis-generator.rar

    &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-core&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` 随后,需要创建一个配置文件`generatorConfig....

Global site tag (gtag.js) - Google Analytics