Tapestry学习十四:关于组件(九)Select组件
来源:互联网 发布:强制uefi ubuntu 卡住 编辑:程序博客网 时间:2024/05/16 06:16
在web应用中下拉选择菜单是必不可少的东西。在Tapestry中是用select组件实现的。而且select组件能很好的和emun相结合,避免在页面中写死那些选项。
我们在注册页面上价格选择框,让用户选择他的国家:
按惯例还是先看代码:
<tr>
<td>Country:</td>
<td>
<select t:type="select" t:model="countries" t:value="country">
<option>Country 1</option>
<option>Country 2</option>
</select>
</td>
</tr>
可以看到select组件是隐藏在HTML控件中的,如果你不想那么写可以以:
<t:select t:model=”contris” t:value=”country”/>
这个组件有两个参数:model和value。Value属性是和以前的组件一样,都是class中的属性。
Model参数提供显示在下拉列表中的数据。这个参数从page class中接受一个实现了SelectModel接口的类。提供SelectModel类的实现有几种方式,这取决与我们想要多灵活和强大。这里我们只考虑简单的,复杂的会在最后讨论。
首先我们要创建一个enum类:
package com.packtpub.celebrities.model;
public enum Country
{
GERMANY, UK, USA
}
这里只写了几个,你想要以后可以自己添加。看看类中的代码:
@Inject
private Messages messages;
public SelectModel getCountries()
{
return new EnumSelectModel(Country.class, messages);
}
@Persist
private Country country;
public Country getCountry()
{
return country;
}
public void setCountry(Country country)
{
this.country = country;
}
我们实例化了一个EnumSelectModel类,这个类实现了一个SelectModel接口,EnumSelectModel构造器有两个参数,一个是在下拉框中显示的数据,还有一个被我们注入的是有点神秘兮兮的message。这个message是什么?
这个话题和以后要说道的国际化就很接近了。每一个Tapestry应用都能有一些资源文件,这些资源文件可以被应用和组件使用,它是一个.properties的文件,放在web-inf文件夹下。它们是以键值对的方式存在的。
当这个message被注入到页面,这个对象就从资源文件中提供了很多可用的键值对给页面使用。我们需要提供一个这样的文件给他。
但是这个资源文件的名字可不是随便定义的,它的名字是对应这web.xml中tapestry filter的名字。
<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry.TapestryFilter
</filter-class>
</filter>
所以我们要新建一个叫app.properties的文件:
Country.Germany=Germany
country.UK=United Kingdom
COUNTRY.USA=United States
废话不多说了,自己看看效果吧。
- Tapestry学习十四:关于组件(九)Select组件
- Tapestry学习十三:关于组件(八)submit组件
- Tapestry学习十五:关于组件(十)GRID组件
- Tapestry学习九:关于组件(四)Loop, Output and DirectLink
- Tapestry学习六:关于组件(一)前戏
- Tapestry学习十一:关于组件(六)Radio and RadioGroup
- Tapestry学习十二:关于组件(七)IF和checkbox组件
- tapestry组件
- Tapestry组件
- Tapestry学习七:关于组件(二)TextField, PasswordField and PageLink
- Tapestry学习八:关于组件(三)Limiting Access to a Page
- Tapestry学习十:关于组件(5)Another Use of PageLink Component
- Tapestry 5组件事件
- Tapestry Table 组件
- Tapestry组件前序
- Tapestry组件调用
- Tapestry 组件详解
- tapestry组件中用$(function(){});
- Tapestry学习十三:关于组件(八)submit组件
- HDOJ_1480 钥匙计数之二 解题报告(解密版)
- 具有只读属性的ComboBox
- Asp.Net构架(Http请求处理流程) - Part.1
- Oracle下导出某用户所有表的方法
- Tapestry学习十四:关于组件(九)Select组件
- PowerBuilder从数据库读取并显示图片。
- 敏捷
- NET牛人应该知道些什么?
- 组件号外:配置ASO
- 看"GeneXus存取图片或文件到数据库的操作"后感
- REST 和 SOA
- eCalc:最棒的在线计算器
- 静态测试工具pclint使用