ice:panelGroup应用

来源:互联网 发布:初学办公软件视频教程 编辑:程序博客网 时间:2024/05/16 13:42

主要用途   

    有时候,某个jsf tag只能内嵌一个子jsf tag,比如f:facet。f:facet用来为包含f:facet的父组件与被f:facet所包含的子组件之间申明一种特殊的关系。具体f:facet的用法可以参考下面的资料:
http://www.lifevv.com/tenyo/doc/20071015164735445.html
http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/index.html

    这个时候,ice:panelGroup可以将若干个子UIComponent包装成像一个,然后嵌入到f:facet中。
    现在,我们来编写一个例子进行测试。使用NetBeans6.7.1和facelets以及ICEfaces1.8.1库。具体过程我就不详述,可以参考我的其他文章。现在,添加如下代码:

    ice:panelGroup将会生成如下html代码:

    具体文档可以参考http://www.icefaces.org/docs/v1_8_1/tld/index.html。现在我们可以了解到,其实就是通过div将一组UIComponent包装在一起。

上下文菜单   

    为了简单起见,上下文菜单我没有加上actionListener。代码如下:

    现在,鼠标右键点击 网页上 "点我",就会出现上下文菜单。

用于表格的上下文菜单

    大多数时候,程序都需要知道右键点击的是哪个UICOmponent,这就需要使用另一个属性contextValue,并且还需要和ice:menuItem的actionListener配合。下面的例子稍微复杂一些,摘自我的一个程序,首先是一个ice:dataTable,用来显示英语短语,一共两列,一列是短语id,一列是短语内容。右键点钟短语id的时候,会弹出上下文菜单,通过contextValue,将当前被选中的短语Phrase对象传递给菜单。下面是摘录的代码:

    


    请注意,这里使用了:::符号加在menuPopupEffects之前,为什么如此,我目前还不清楚。下面一段是managed bean的代码,处理菜单点击事件的:

   从参数ev中,获取contextValue,然后转换成Phrase对象,并作相应的业务处理。panelGroup的menuPopup也可用于树,下面是示例代码: