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>
分享到:
相关推荐
Tapestry是一个强大的Java web应用程序框架,由Apache软件基金会维护。它以其组件化、类型安全和高度可扩展性而闻名。在本篇文章中,我们将深入探讨Tapestry的页面编辑组件,以及如何利用这些组件创建交互式的用户...
- **示例**: `Map<String, Object> validationRules = new HashMap<>();` - **应用场景**: 动态设置校验规则。 **2.2 变量自动转换/校验变量类型** - **自动转换**: 使用`@Property`注解指定字段类型,Tapestry会...
- **具体实践:** 使用`<t:select>`标签,并为其提供选项列表。 **1.6 使用日历工具(DatePicker)** - **概念理解:** 日历工具允许用户选择日期。 - **具体实践:** 使用`<t:datePicker>`标签来实现日期的选择...
- `void onActivate(List<Object> list)`:类间数据传递方法,用于传值页面,可将需要传递的数据放入 List 中,并传递给接收页面的 `paramList`。 - `Request getRequest()`:获取请求对象 Request。 - `Session ...
- 示例:`<div data-display="${person.name}">`,其中 `${person.name}` 是绑定表达式,`person.name` 是页面类中的属性。 ##### 3. 使用组件 - **组件**:Tapestry 中的基本构建单元,类似于页面类,但更专注于...
Tapestry允许在HTML中使用组件和属性,通过简单的标签语法,如`<t:component>`,可以在HTML页面中动态插入和配置组件。 **1.5 使用下拉列表框(combobox)** 下拉列表框在Tapestry中被称为`ComboBox`,用于提供一个...
<transition on="select" to="enterDetails" /> </view-state> <view-state id="enterDetails" view="enterDetails.jsp"> <transition on="submit" to="confirmation" /> </view-state> <end-state id=...
- `<s:select>`:用于创建下拉列表。 通过使用这些标签,开发者可以轻松地创建出美观且功能齐全的用户界面。 #### 七、结论 总的来说,**Struts2**不仅继承了**WebWork**的强大功能,还吸取了**Struts1**的经验...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用 ...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. ...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. ...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用 TransactionTemplate 9.6.2. 使用 ...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用 TransactionTemplate 9.6.2. 使用 ...