Struts2 将两个<sx:autocompleter/>关联起来

本人最近两天想使用sx:autocpmpleter来实现地区的异步动态更新。《Struts2.1权威指南》中找到示例,结果按照示例的方式去研究怎么弄都无法现实动态更新。最后发现示例代码不全,作者很马虎导致,代码更本不可运行。在网上搜索也没有相关的完整示例代码。花了漫长的2天时间终于搞定了!个人意见仅供参考。

1.jsp代码:

 

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>自动完成</title>
 <sx:head/>
</head>
<body>
<h3>将两个sx:autocompleter关联起来</h3>
<form id="selectForm" >
请选择您喜欢的作者:<br />
<sx:autocompleter 
 name="author" 
 list="{'1','Rod Johnson' , 'David Flanagan'}" 

<--list="#request['books']" listKey="id" listValue="name"-->

<--list="#{'1':'2','2':'3'}" listKey="%{0}" listValue="%{1}"

 list="#request['books']" listKey="id"<--传递的值--> listValue="name"<--显示的值--> required="id"<--指定传递的参数属性-->

-->

 value="1"
 notifyTopics="/books"
 forceValidOption="true"/>

</form>
请选择您喜欢的图书:<br />
<sx:autocompleter 
 name="book"
 href="getBooks.action" 
 cssStyle="width: 240px;"
 autoComplete="false"
 formId="selectForm"
 listenTopics="/books"
 forceValidOption="true"/>
</body>
</html>

 2.Action代码

 

package lee;

import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;


public class GetBooksAction extends ActionSupport {

    private String author;
    private List<String> books = new ArrayList<String>();
    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    //author属性的setter和getter方法
    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = HTMLDecoder.decode(author);
    }
    //books属性的getter方法

    public List<String> getBooks() {
        return books;
    }
    //处理用户请求的execute方法

    public String execute() throws Exception {
        if (author.equals("1")) {
            books.clear();
            books.add("疯狂Java讲义");
            books.add("轻量级Java EE企业应用实战");
            books.add("疯狂Ajax讲义");
            books.add("疯狂XML讲义");
            num = 3;
        } else if (author.equals("Rod Johnson")) {
            books.clear();
            books.add("Expert One-on-One J2EE"
                    + " Design and Development");
            books.add("Expert One-on-One J2EE"
                    + " Design and Development");
            num = 1;
        } else if (author.equals("David Flanagan")) {
            books.clear();
            books.add("JavaScript权威指南");
            books.add("Expert One-on-One J2EE"
                    + " Design and Development");
            num = 1;
        }
        System.out.println(books.get(0));
        return SUCCESS;
    }
}

 

3.异步页面代码

 

<%@ page contentType="text/html;charset=GBK" language="java" %>

 

 

<%@ taglib prefix="s" uri="/struts-tags" %>
{
<s:iterator value="books" var="b" status="bs">
 '<s:property/>':'<s:property/>'
    <s:if test="%{#bs.index<num}">
        ,
    </s:if>
</s:iterator>
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值