六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 25|回复: 0

java Tapestry5 <select>

[复制链接]

升级  32%

22

主题

22

主题

22

主题

秀才

Rank: 2

积分
98
 楼主| 发表于 2013-2-3 10:16:17 | 显示全部楼层 |阅读模式
16.public class Brand {  
17.  
18.    private String id;  
19.    private String description;  
20.      
21.    public Brand() {}  
22.  
23.    public Brand(String id, String description) {  
24.        this.id = id;  
25.        this.description = description;  
26.    }     
27.  
28.    public String getId() {  
29.        return id;  
30.    }  
31.  
32.    public String getDescription() {  
33.        return description;  
34.    }  
35.      
36.}  
37.  
38.  
39.Test.java  
40.  
41.public class Test {  
42.  
43.    @Persist  
44.    private Brand brand;  
45.  
46.    @Persist  
47.    private List<Brand> brands;  
48.      
49.    public Brand getBrand() {  
50.        return brand;  
51.    }  
52.  
53.    public void setBrand(Brand brand) {  
54.        this.brand = brand;  
55.    }  
56.      
57.    private List<Brand> getBrands()  
58.    {  
59.        if(brands == null) {  
60.            brands = new ArrayList<Brand>();  
61.            brands.add(new Brand("1", "Brand 1"));  
62.            brands.add(new Brand("2", "Brand 2"));  
63.            brands.add(new Brand("3", "Brand 3"));  
64.            brands.add(new Brand("4", "Brand 4"));  
65.        }  
66.         
67.        return brands;  
68.    }  
69.      
70.    public BrandSelectModel getBrandSelectModel() {  
71.        return new BrandSelectModel(getBrands());  
72.    }  
73.  
74.    public BrandValueEncoder getBrandValueEncoder() {  
75.        return new BrandValueEncoder(getBrands());  
76.    }  
77.      
78.    public class BrandValueEncoder implements ValueEncoder<Brand> {  
79.         
80.        private List<Brand> brands;  
81.         
82.        public BrandValueEncoder(List<Brand> brands) {  
83.            this.brands = brands;  
84.        }  
85.  
86.        public String toClient(Brand brand) {  
87.            return brand.getDescription();  
88.        }  
89.  
90.        public Brand toValue(String string) {  
91.            for(Brand brand : brands) {  
92.      
93.if(brand.getDescription().equals(string)) {  
94.                    return brand;  
95.                }  
96.            }  
97.            return null;  
98.        }  
99.  
100.    }  
101.      
102.    public class BrandSelectModel implements SelectModel {  
103.         
104.        private List<Brand> brands;  
105.         
106.        public BrandSelectModel(List<Brand> brands) {  
107.            this.brands = brands;  
108.        }  
109.         
110.        public List<OptionGroupModel> getOptionGroups() {  
111.            return null;  
112.        }  
113.  
114.        public List<OptionModel> getOptions() {  
115.            List<OptionModel> optionModelList = new  
116.ArrayList<OptionModel>();  
117.            for(Brand brand: brands) {  
118.                optionModelList.add(  
119.                    new OptionModelImpl(  
120.                        brand.getDescription(),   
121.                        false,   
122.                        brand,   
123.                        new String[0]  
124.                    )  
125.                );  
126.            }  
127.            return optionModelList;  
128.        }  
129.  
130.    }  
131.      
132.}  
xml 代码

1.Test.html  
2.  
3.<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">  
4.<t:form>  
5.  
6.    <select t:type="select" t:id="brand"  
7.        value="brand" model="brandSelectModel"  
8.encoder="brandValueEncoder"  
9.        onchange="this.form.submit();" />  
10.  
11.    <br/>  
12.      
13.    <t:if test="brand">  
14.        ${brand.description}  
15.    </t:if>  
16.  
17.</t:form>  
18.</html>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表