struts2中doubleselect的使用方法 -凯发k8网页登录

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  凯发k8网页登录-凯发天生赢家一触即发官网 :: 凯发k8网页登录首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

struts2中doubleselect的使用方法

posted on 2008-03-27 22:08 云自无心水自闲 阅读(12066) 评论(16)     所属分类: java心得体会struts2
在struts2的官方网站上,有doubleselect的用法示例,但是那个例子比较简单。

上面的例子演示了doubleselect的基本用法,但是其list和doublelist都是固定的。尤其是doublelist的切换使用了3目运算符 ? :,并没有太大的实际使用价值。在实际应用中,list往往是action返回的一个list,listkey和listvalue来显示第一级下拉框,doublelist往往是一个map>,其中map中的key值是第一级下拉框的listkey。
举个例子:
data object:
public class book {
        
private int id;
        
private string name;
        
private int categoryid;

        
// getter and setter..
}


public class category {
        
private int id;
        
private string name;

        
// getter and setter..
}


jsp:
   doublename="bookid" doublelist="bookmap.get(top.id)" doublelistkey="id" doublelistvalue="name" theme="simple"/>

此处要注意的是top的用法,开始我以为top就是指代list的值,所以使用的是bookmap.get(top),但是二级下拉框一直是空白,后来我突然想到说不定top是一个category实例呢,尝试了一下top.id,果然成功了。

action:

public class demoaction {
        
private map<integer, list<book>> bookmap;
        
private list<category> categorylist;

        
public string execute() throws exception {
                categorylist 
= new arraylist<cateogry>();

                category category;
                category 
= new category();
                category.setid(
1);
                category.setname(
"fiction");
                categorylist.add(category);
                category 
= new category();
                category.setid(
2);
                category.setname(
"java");
                categorylist.add(category);

 

                bookmap 
= new hashmap<integer, list<book>>();

                list
<book> booklist = new arraylist<book>();
                book book;
                book 
= new book();
                book.setid(
1);
                book.setname(
"harry porter");
                book.setcategoryid(
1);
                booklist.add(book);

                book 
= new book();
                book.setid(
2);
                book.setname(
"nightmare");
                book.setcategoryid(
1);
                booklist.add(book);

                bookmap.put(
1, booklist);

 

                booklist 
= new arraylist<book>();
                book 
= new book();
                book.setid(
3);
                book.setname(
"thinking in java");
                book.setcategoryid(
2);
                booklist.add(book);
                book 
= new book();
                book.setid(
4);
                book.setname(
"head first design patterns");
                book.setcategoryid(
2);
                booklist.add(book);

                bookmap.put(
2, booklist);


                
return success;
        }

        
// getter and setter..
}






评论

# re: struts2中doubleselect的使用方法[未登录]  回复     

2008-03-28 12:43 by
struts2很多标签的用法要靠猜的,真是很郁闷

# re: struts2中doubleselect的使用方法  回复     

2008-03-29 11:22 by
是的,感觉struts2的文档还是不够详细具体。

# re: struts2中doubleselect的使用方法  回复     

2008-04-08 16:44 by
经测试这段代码有以下几个问题,
1、代码第二行,
private map> booklist;
应该是
private map> bookmap;
2、book 里面只有一个值,由于没有声明book 类型为singleton,所有你存那么多值,最终在页面最的时候只有一个,那就是 "head first design patterns"

最后谢谢楼主给了我一个提示,最终解决了我的问题。

# re: struts2中doubleselect的使用方法  回复     

2008-04-10 10:40 by
谢谢你指出代码中的错误。我这段代码不是在eclipse这样的集成开发环境里写的,所以出现了一些错误。

# re: struts2中doubleselect的使用方法[未登录]  回复     

2008-04-14 18:09 by
不知道为什么总是报:“freemarker template error!”的错误???

# re: struts2中doubleselect的使用方法[未登录]  回复     

2008-04-14 18:17 by
刚解决,

# re: struts2中doubleselect的使用方法  回复     

2008-06-26 10:05 by
报模块找不到的错误,
the module has not been deployed.
see the server log for details.
at org.netbeans.modules.j2ee.deployment.devmodules.api.deployment.deploy(deployment.java:174)
at org.netbeans.modules.j2ee.ant.deploy.execute(deploy.java:104)
at org.apache.tools.ant.unknownelement.execute(unknownelement.java:288)
at sun.reflect.generatedmethodaccessor121.invoke(unknown source)
在netbeans中加入struts2,只加了最基本的5个jar包。偶是菜鸟。。。
完全不知道怎么解决。

# re: struts2中doubleselect的使用方法  回复     

2008-06-27 13:12 by
@wu
是在什么地方发现的这个错误?能说得再详细一些吗?

# re: struts2中doubleselect的使用方法  回复     

2008-08-04 11:45 by
高手,拜托给看看这个问题,先谢谢啦。

# re: struts2中doubleselect的使用方法  回复     

2008-09-12 18:50 by
lz我按照你上面写的做了一下,结果不能成功
抛出了异常
严重: servlet.service() for servlet jsp threw exception
tag 'doubleselect', field 'list': the requested list key 'categorymap.get(top.id)' could not be resolved as a collection/array/map/enumeration/iterator type. example: people or people.{name} - [unknown location]

貌似这个标签本身就有个缺陷......
(注:我的配置包就是最基本的5个,其他的配置也是正确的,而且也测试了多次,在网上也找了一些类似的资料,结果还是报错)

# re: struts2中doubleselect的使用方法  回复     

2008-09-12 18:50 by
我的struts.xml配置

"-//apache software foundation//dtd struts configuration 2.0//en"
"






/index.jsp



# re: struts2中doubleselect的使用方法  回复     

2008-09-12 18:53 by
index.jsp

<%@ page language="java" pageencoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>



dfsdfd




doublename="bookid" doublelist="bookmap.get(top.id)" doublelistkey="id" doublelistvalue="name" theme="simple" formname="login"/>




# re: struts2中doubleselect的使用方法  回复     

2008-09-12 18:54 by
然后3个java文件和你的一样,但是就是运行不起....
不知道为什么?
望lz给予解答

# re: struts2中doubleselect的使用方法  回复     

2008-09-13 18:59 by
@waylon
根据错误信息,错误是因为你的bookmap.get(top.id)返回的结果不是一个list,
那么需要检查以下一些东西:
1. bookmap的值是否正确(bookmap是否为空,bookmap集合里的元素值是否正确)
2. top.id的值是否正确(也就是categorylist的值是否正确)
3. categorylist里的第一个值是否是bookmap里的一个键值

# re: struts2中doubleselect的使用方法  回复     

2008-10-15 11:22 by
listkey与doublelistkey 如何关联,我好像没法通过listkey筛选???

# re: struts2中doubleselect的使用方法  回复     

2008-10-21 19:24 by
@zgxer
doubleselect的运行原理是这样的:
list属性指定了一个list,这个list中的值可以是一个key-value对,也可以是一个javabean,如果是javabean,需要用listkey和listvalue来指定list的key和value使用javabean中的哪个属性。
doublelist也是一个list,但是如何实现联动的呢?关键就是在于booklist的写法是:top关键字的应用。在我的例子中是这样的:doublelist="bookmap.get(top.id)",bookmap.get(top.id)返回的就是一个list,而且是根据top.id返回的list,top代表是就是list当前选中的对象。

只有注册用户后才能发表评论。


网站导航:
              
 
网站地图