更新 - 添加了<rich:orderingList />并指定日历的区域设置
RichFaces团队发布了RichFaces 3.1.3.GA。这是自9月3.1.0版本以来首次包含任何新组件的发布(3.1.1和3.1.2都是错误修复版本),因此我想向您突出显示关键改进。
时间选择器
<rich:calendar value="#{flight.departureDate}" locale="#{locale}" datePattern="dd/M/yy hh:mm" />正如您所看到的,它也完全支持国际化!
从另一个组件控制一个组件
<rich:componentControl />允许您在当前组件上发生javascript事件时在另一个组件上触发一个动作。这非常强大,也许直到您需要它才难以理解,让我们看看一个非常简单的例子。这里有一个模态面板(有点像基于css/div的弹出窗口),我们希望从页面的某个位置启动它
<rich:modalPanel id="panel" width="350" height="100"> <f:facet name="header"> <h:outputText value="Modal Panel" /> </f:facet> <h:outputText value="This panel is called using rich:componentControl"/> </rich:modalPanel>
<h:outputLink value="#"> Show Modal Panel <rich:componentControl for="panel" attachTo="link" operation="show" event="onclick"/> </h:outputLink>
我们不需要调用JS函数,只需将一个组件控制器附加到链接,并告诉它要对哪个组件执行什么操作。
<rich:componentControl />可以做得更多 - 请查看在线演示以获取灵感。
穿梭列表
<rich:listShuttle sourceValue="#{items.availableItems}" targetValue="#{items.selectedItems}" var="item" sourceCaptionLabel="Available Items" targetCaptionLabel="Currently Active Items"> <rich:column width="18"> <h:graphicImage value="#{item.icon}"/> </rich:column> <rich:column> <h:outputText value="#{item.label}"/> </rich:column> </rich:listShuttle>请注意,我们如何在布局列表中嵌入其他rich组件!
可排序列表
<rich:orderingList value="#{myMusic}" var="album"> <rich:column> <f:facet name="header"> Song Name </f:facet> <h:outputText value="#{album.title}"/> </rich:column> <rich:column> <f:facet name="header"> Artist Name </f:facet> <h:outputText value="#{album.artist.name}" /> </rich:column> </rich:orderingList>
上下文相关菜单
<s:div id="flower"> <h:graphicImage value="flower.jpg"/> <rich:contextMenu event="oncontextmenu" attached="true" submitMode="none"> <rich:menuItem value="Zoom In" onclick="enlarge();"/> <rich:menuItem value="Zoom Out" onclick="decrease();"/> </rich:contextMenu> </s:div>这里我们将上下文菜单附加到父元素上<s:div />组件,因此对该组件的任何右键点击都会显示菜单。
还有
- 对 Portal 支持的重大改进(我们刚刚完成对 Seam 和 RichFaces 在小部件中的支持)
- 一个系统,用于自定义如何加载样式(一次性加载,或在需要时加载)
- 超过 180 个错误修复(请参阅发行说明)
祝贺 RichFaces 团队!