编写JSF自定义复合组件的技巧和窍门 - 编程入门网
<attribute>
<name>id</name>
<description>ValueScroller ID</description>
</attribute>
<attribute>
<name>value</name>
<description>ValueScroller value</description>
</attribute>
<attribute>
<name>size</name>
<description>Input field size</description>
</attribute>
<attribute>
<name>min</name>
<description>Minimum value</description>
</attribute>
<attribute>
<name>max</name>
<description>Maximum value</description>
</attribute>
<attribute>
<name>step</name>
<description>Scrolling step</description>
</attribute>
</tag>
编写JSF自定义复合组件的技巧和窍门(6)时间:2011-11-02 IBM我们看到,除了 min/max/step 是自定义的属性之外,其他的都属于 JSF 标准组件的属性,可以直接 传递给构成 Value Scroller 的标准组件处理,完全不用为这些标准组件的属性覆盖实现方法 saveState () 和 restoreState() . 通常有两种方法传递属性值。当你需要对属性进行一些额外的操作(如验证或者转换等),可以在标 签类 ValueScrollerTag 中将属性传递给自定义组件类,如下所示: 清单 4. 传递自定义属性 /** * Override the setProperties method */ protected void setProperties(UIComponent component) { super.setProperties(component); ValueScroller vs = (ValueScroller)component; Application app = FacesContext.getCurrentInstance().getApplication(); // Set value attribute if (value != null) { if (isValueReference((String)value)) { ValueBinding vb = app.createValueBinding((String)value); vs.setValueBinding("value", vb); } else { throw new IllegalArgumentException("The value property must be a value " + "binding expression that points to a bean property."); } } // Set id attribute if (id != null) { vs.setId((String)id); } // Set other attributes vs.setMin(min); vs.setMax(max); vs.setStep(step); } 另外一种方法就是在标签类 ValueScrollerTag 中直接把属性值加入相应标准组件的属性 Map 。例如 ,将 size 属性传递给自定义复合组件包含的 UIInput: 清单 5. 传递标准属性 vs.findComponent("input").getAttributes().put ("size", new Integer(size)); 编写JSF自定义复合组件的技巧和窍门(7)时间:2011-11-02 IBM实现内部动作监听器 在 Value Scroller 中,点击增值或减值按钮,输入框内的值会随之增大或者减小。我们可以简单地 在组件类 ValueScroller 中实现一个内部动作监听器,重用 UICommand 的事件处理逻辑。 清单 6. 实现 Value Scroller 动作监听器 /** * Internal action listener for Value Scrol |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |