快速业务通道

编写JSF自定义复合组件的技巧和窍门 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
<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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号