如何在JSF 2.0中获取选项卡式窗格组件(Sun Mojarra)

我现在正在学习/使用JSF 2.0(Sun Mojarra),我希望在我的webapp中有一个选项卡式窗格(单个选项卡可以命名为General,Detail1,Detail2,…)。

我该如何实现这一目标? 到目前为止,我还没有找到任何文件:(

其他人已经暗示过:Mojarra是一个基本的 JSF实现。 它提供了最小的必需组件集,以涵盖大多数现有HTML元素(表单,输入字段和表)。 由于HTML不在单个元素中提供选项卡式面板,因此基本的JSF实现也不会这样做。

标签面板基本上是一组链接(或按钮)和面板,它们将被隐藏/可见切换。 要表示链接,通常使用HTML 元素。 要表示面板,通常使用HTML

元素。 要切换显示/隐藏,基本上有两种方式:

  1. 打印每个面板以响应,但使用CSS display: none隐藏所有其他面板,并使用JavaScript通过将新面板设置为display: block visiblity display: block和要display: none的旧面板display: none

  2. 或者,有条件地将请求的面板打印到响应中。 可以通过链接(或按钮)中的请求参数来确定已请求哪个面板。

这是方式1的基本 copy’n’paste’n’runnable示例:

    SO question 3491969       
panel1 content
panel2 content
panel3 content

您当然可以通过替换 等等

,但只要您不需要在支持中绑定它bean和/或JSF组件树,然后纯HTML也完全有效,并且开销较小。

您只需将带入,即可根据某些列表“动态”重复选项卡和面板。 另外不要忘记投入很好的CSS来使它看起来像美味。 这基本上是大部分工作的用武之地。

毕竟基本上也是PrimeFaces , RichFaces和IceFaces等第三方组件库正在做的事情。 它们都在单个组件中提供所需的function,可以完成所有重复和眼睛的工作。 例如,PrimeFaces有一个 ,RichFaces一个 ,IceFaces一个等等。

考虑使用现有的组件库。

PrimeFaces有一个能够添加效果和动态内容的TabView 。

要实施PrimeFaces,请按照说明操作

如果我可以这样称呼它,JSF只是一个“骨干”框架。 开箱即用它只给你很少的组件,因为这是创作者的意图 – 他们希望其他人用他们自己的工作扩展这个框架(只要他们遵循设定的标准,即)。 现在,您可以编写自己的组件,也可以使用已有许多组件的PrimeFaces,ICEFaces,RichFaces等框架。

JSF有许多有用的组件,它们提供了更多或更少的更好的选项卡面板(以及许多其他组件)。 RichFaces,IceFaces,OpenFaces(和PrimeFaces一样)。 每个都相当完整,你通常不能混合匹配,所以看看每个的演示网站,然后选择你喜欢的。 我喜欢RichFaces,但这部分是因为它是Seam2的默认设置,这是我第一次学习JSF的地方。 构架