PrimeFaces4,5的AutoComplete、SelectOneMenu等在下拉菜单中除了显示单纯的文字列表外,还可以分多列显示图片等内容,效果上比OS自带的控件更绚了,但使用上并不复杂,将String的List数据更换成POJO的List,再自定义一个Converter就行了。
Converter并不是PrimeFaces定义的,属于JSF规范。在JavaEE的文档[3]中,对Converter的介绍是“Converters are used to convert data that is received from the input components.” ,需要这个东西的原因是JSF等Web层和普通GUI一样,用户输入的内容都是作为字符串来接收和显示的,但是在程序内部存储的变量则可能是Integer,Float,Date等等类型,需要进行类型转换。以往这些转换是由应用设计人员自己编码进行的,但新的GUI框架中,这部分转换基本都交给专门的功能类来处理了。
JSF2.0中,这个转换工作是由Converter类来完成的,JavaEE6.0已经实现了一部分数据类型的Converter,位于javax.faces.convert 包内:
- BigDecimalConverter
- BigIntegerConverter
- BooleanConverter
- ByteConverter
- CharacterConverter
- DateTimeConverter
- DoubleConverter
- FloatConv