如何在JSF 2.0中获取选项卡式窗格组件(Sun Mojarra)
我现在正在学习/使用JSF 2.0(Sun Mojarra),我希望在我的webapp中有一个选项卡式窗格(单个选项卡可以命名为General,Detail1,Detail2,…)。
我该如何实现这一目标? 到目前为止,我还没有找到任何文件:(
其他人已经暗示过:Mojarra是一个基本的 JSF实现。 它提供了最小的必需组件集,以涵盖大多数现有HTML元素(表单,输入字段和表)。 由于HTML不在单个元素中提供选项卡式面板,因此基本的JSF实现也不会这样做。
标签面板基本上是一组链接(或按钮)和面板,它们将被隐藏/可见切换。 要表示链接,通常使用HTML 元素。 要表示面板,通常使用HTML
元素。 要切换显示/隐藏,基本上有两种方式:
-
打印每个面板以响应,但使用CSS
display: none
隐藏所有其他面板,并使用JavaScript通过将新面板设置为display: block
visiblitydisplay: block
和要display: none
的旧面板display: none
。 -
或者,有条件地将请求的面板打印到响应中。 可以通过链接(或按钮)中的请求参数来确定已请求哪个面板。
这是方式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的地方。 构架