`

Practical_RichFaces要点Chapter09

阅读更多
1.      <rich:dropDownMenu>

1)      <rich:dropDownMenu> 生成下拉菜单。

2)      每一个 menu item 都可以设定 action 或 actionListener 以供 Ajax 调用。 reRender 属性定义需要被刷新的控件。

3)      <rich:toolBar> 是装载下拉菜单的容器。

4)      <rich:dropDownMenu> 不提供其自己的 form ,所以必须置于 form 里才能使用。

5)      可以使用 <rich:dropDownMenu> 的 value 属性或者 <f:facet name=”label”> 来指定菜单的名称。

6)      submitMode 属性控制提交模式,三种选择:

l        Server (默认):使用常规的表单提交 Request ;

l        Ajax :使用 Ajax 提交;

l        None : action 和 actionListener 都被忽略掉, menu item 不触发任何提交,所有行为都取决于嵌于 item 内部的控件。

如果在 <rich:dropDownMenu> 设置该属性,则其内部的所有 menuItem 也将继承其属性值。

7)      <rich:menuItem> 也提供了 onXXXX 属性,例如 onselect 、 onclick 、 oncomplete 等,用于调用自定义 JavaScript 代码(如显示 modalPanel 等)。

 

 

2.      <rich:contextMenu>

1)      event 属性用于设定引起 contextMenu 弹出的事件,比如 oncontextmenu 、 onclick 等,主要还是要看 <rich:contextMenu> 所服务的控件支持哪些 onXXXX 事件。

2)      submitMode 属性控制提交模式,三种选择:

l        Server (默认):使用常规的表单提交 Request ;

l        Ajax :使用 Ajax 提交;

l        None : action 和 actionListener 都被忽略掉, menu item 不触发任何提交,所有行为都取决于嵌于 item 内部的控件。

如果在 <rich:contextMenu> 设置该属性,则其内部的所有 menuItem 也将继承其属性值。

3)      attachTo 属性用于指定将 contextMenu 指定给哪个控件。

4)      或是将 <rich:contextMenu> 直接置于某个控件体内,并将 attached 属性设为 true ,也可以实现以上效果。比如在表格中使用时,可以将 <rich:contextMenu> 直接放在 <rich:column> 中。

但应注意,根据用户指南提示, <rich:contextMenu> 应该放在 <h:outputText> 外面,或者为 <h:outputText> 设置 ID ,已实现正常使用。

5)      disableDefaultMenu 属性可以彻底禁用页面的默认右键菜单。

6)      可以在 menuItem 体内,使用 <f:setPropertyActionListener> 或 <a4j:actionparam> ,传递参数。

 

 

3.      <rich:contextMenu> 与 <rich:componentControl>

1)      可以用 <rich:componentControl> 来调用显示 contextMenu ,并传递参数,例如:

<rich:componentControl event="onRowClick" for="menu" operation="show">

<f:param value="#{air.name}" name="airlineName" />

</rich:componentControl>

2)      这时 <rich:contextMenu> 的 attached 属性应该设为 false 。

3)      通过 <f:param> 传递的参数,可以在 contextMenu 中使用,比如:

<rich:menuItem value="Select {airlineName} " actionListener="#{airlinesBean.select}">

</rich:menuItem>

              注意,这里用的是 {paramName} ,而 #{paramName} ,没有“ # ”。

 

 

4.      <rich:contextMenu> 与 <a4j:support>

1)      当需要动态的向 <rich:contextMenu> 传递参数的时候,尤其是在 dataTable 中的时候,有两种方法:

l      将 <rich:contextMenu> 放在 dataTable 体内,则 <rich:contextMenu> 可以直接使用 dataTable 的 var 属性;但局限性就是,必须置于 dataTable 体内;

l      另方法就是使用 <a4j:support> 。

2)      具体方法就是通过设定 <a4j:support> 的 event 属性,指定父控件的什么样的事件会弹出 contextMenu 。例如:

<a4j:form>

<rich:dataTable id="dtTable" value="#{dataTableTestBean.xcvrList}" var="xcvr" rows="15">

 

<rich:column>

<f:facet name="header">

<h:outputText value="Item Code"></h:outputText>

</f:facet>

<h:outputText value="#{xcvr.itemCode}"></h:outputText>

</rich:column>

 

<rich:column>

<f:facet name="header">

<h:outputText value="Market Name"></h:outputText>

</f:facet>

<h:outputText value="#{xcvr.marketName}"></h:outputText>

</rich:column>

 

<a4j:support event="onRowContextMenu" reRender="ctxMenu" oncomplete=" #{rich:component('ctxMenu')}.doShow(event,{}) " >

<f:setPropertyActionListener value="#{xcvr}" target="#{dataTableTestBean.selectedXcvr}"/>

</a4j:support>

 

</rich:dataTable>

 

<rich:contextMenu id="ctxMenu" submitMode="ajax" attached="false" disableDefaultMenu="true">

<rich:menuItem value="View #{dataTableTestBean.selectedXcvr.itemCode}" reRender="detailPanel" ajaxSingle="true" actionListener="#{dataTableTestBean.menuClicked}" oncomplete="#{rich:component('detailPanel')}.show()">

</rich:menuItem>

</rich:contextMenu>

</a4j:form>

 

 

5.      尚存疑问

1)      在使用 contextMenu 时,我曾想通过点击 menuItem 来弹出 modalPanel ,也确实成功了。但是问题是,只是隔次成功,换句话说,就是第一次成功、第二次失败、第三次成功、第四次失败……但奇怪的是,如果只是弹出菜单,而没有点击,则再次右键弹出时,就又成功了。

2)      失败的时候,连 actionListener 都不会执行, modalPanel 更是没有弹出。我换了好几种方法, dataTable 内外都试过了,均是如此。但如果去除要弹出modalPanel的代码,则一切恢复正常,actionListener每次也能正常运行。

3)      我在 JavaRanch 的论坛上,发了帖子,还在等待解答。

http://www.coderanch.com/t/449548/JSF/java/Trouble-with-ContextMenu-ModalPanel-RichFaces

 

Hi all,

I met some trouble when I used the RichFaces contextMenu and modalPanel together.

I hope to show the modalPanel by clicking the context menu item.

For the first time I clicked the menu item, the modal was showed. However, the second time, the menu item even didn't execute. Then the third time, everything went well again. And then 4th time failed, 5th time succeeded, 6th time failed..., alternately.

Thus, 50% succeeded and 50% failed. It's too weird.



1.               <f:view>  

2.                   <a4j:form>  

3.                       <h:panelGroup id="panelGroup" >  

4.                           <h:outputText value="Right Click Me!" ></h:outputText>  

5.                       </h:panelGroup>  

6.         

7.                       <rich:contextMenu attachTo="panelGroup"  event="oncontextmenu"   

8.                           submitMode="ajax"  disableDefaultMenu="true" >  

9.                           <rich:menuItem value="try"   

10.                           oncomplete="#{rich:component('modalPanel')}.show()"   

11.                           actionListener="#{contextMenuTestBean.menuClicked}" ></rich:menuItem>  

12.                   </rich:contextMenu>  

13.               </a4j:form>  

14.     

15.               <rich:modalPanel id="modalPanel" >  

16.                   <f:facet name="header" >  

17.                       <h:outputText value="Modal Panel"  />  

18.                   </f:facet>  

19.                   <h:outputText value="Hello!"  />  

20.                   <a4j:commandLink value="Close"   

21.                       onclick="#{rich:component('modalPanel')}.hide()" ></a4j:commandLink>  

22.               </rich:modalPanel>  

23.           </f:view>     


When I remove the code on line 10.

oncomplete="#{rich:component('modalPanel')}.show()"     


The actionListener of menuItem can be executed successfully every time.

Can anybody help to advise the reason?

Thanks in advance!



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gengv/archive/2009/06/14/4269014.aspx
分享到:
评论
1 楼 ranyut 2009-08-19  
<rich:dropDownMenu>留名标记</rich:dropDownMenu>

相关推荐

    usersrc.rar_jsf richfaces_richfaces_办公 Java

    《Java JSF Richfaces在办公自动化系统中的应用详解》 在现代企业信息化建设中,办公自动化系统的开发与应用已经成为提升工作效率、实现管理现代化的关键。本文将深入探讨如何利用Java、JSF(JavaServer Faces)...

    JBoss_RichFaces_3.3

    ### JBoss RichFaces 3.3:增强JSF Web应用程序的强大力量 #### 引言 《JBoss RichFaces 3.3》是一本专为希望利用强大的AJAX组件来增强JSF(JavaServer Faces)Web应用的开发人员而编写的书籍。作者Demetrio ...

    j-richfaces4.zip_richfaces4 demo

    dwRichFaces4Demo1 示例应用程序很简单;其惟一的真正目的是展示所选组件的设置和用法。因此,它的作用便是收集和显示输入数据。请想象一下如何在生产应用程序中使用数据和组件。除了必要的 JAR、图像、支持资源绑定...

    Practical RichFaces

    《Practical RichFaces》这本书深入探讨了如何在JavaServer Faces (JSF) 应用程序中有效地使用RichFaces框架,从而实现高效的AJAX功能。 RichFaces是一个强大的JSF组件库,它极大地扩展了JSF的功能,特别是在提升...

    Practical_JBoss_Seam书的源代码

    《Practical JBoss Seam》是一本深入探讨JBoss Seam框架技术的书籍,其源代码包含在提供的压缩包中。Seam是一种开源的企业级Java框架,它整合了多种技术和概念,如JavaServer Faces (JSF)、Java Persistence API ...

    Practical RichFaces, 2nd Edition

    《Practical RichFaces, 2nd Edition》是一本专注于JavaServer Faces (JSF)及其增强库RichFaces的实用指南。本书旨在帮助开发者深入了解并充分利用JSF和RichFaces的强大功能,特别是在Web应用程序开发领域。随着技术...

    RichFaces_3.3.3标签库手册

    RichFaces_3.3.3_TLD.chm

    richfaces_helloWorld

    **标题解析:** "richfaces_helloWorld" 这个标题暗示了我们正在处理一个与RichFaces框架相关的示例项目,具体来说是一个“Hello World”应用。RichFaces是基于JavaServer Faces (JSF) 技术的开源用户界面组件库,...

    richfaces_usersguide 3.3

    《深入解析RichFaces 3.3用户指南:框架精髓与实战应用》 一、引言:RichFaces框架概览 RichFaces 3.3作为一款先进的企业级开发框架,为开发者提供了丰富的组件库以及强大的皮肤支持,极大地提升了Web应用程序的...

    richfaces_reference.pdf

    ### RichFaces框架知识点详解 #### 一、简介 RichFaces是一款功能强大的开源JavaScript库与Java Server Faces (JSF) 集成的组件库,它提供了丰富的用户界面组件以及Ajax支持,大大简化了Web应用程序的开发过程。此...

    Richfaces ShowCase离线包

    **Richfaces ShowCase离线包** 是一个专为开发者设计的资源包,它包含了Richfaces框架的演示示例,能够帮助用户在没有网络连接的情况下也能深入理解和学习Richfaces的功能和用法。这个离线包特别适合那些需要在本地...

    RichFaces4.5 JavaApi JSApi

    RichFaces 4.5 是一个强大的JavaServer Faces (JSF) 框架的扩展库,专为构建富互联网应用程序(Rich Internet Applications, RIA)而设计。这个库提供了丰富的组件集,以及对JavaScript(JS)和Java API的支持,使得...

    richfaces中文开发文档

    **RichFaces中文开发文档概述** RichFaces是一款基于JavaServer Faces(JSF)技术的开源UI组件库,由JBoss组织开发。它为JSF应用程序提供了丰富的用户体验和强大的交互功能。这款框架极大地简化了Web开发过程,尤其...

    richfaces-ui-3.2.1

    《深入理解RichFaces UI 3.2.1在JBoss中的应用》 RichFaces UI 3.2.1是JBoss框架中一个重要的组件,它为开发人员提供了一套强大的AJAX(Asynchronous JavaScript and XML)功能,极大地提升了Web应用程序的交互性和...

Global site tag (gtag.js) - Google Analytics