gpt4 book ai didi

java - 如何制作 primefaces 动态工具栏

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:55 26 4
gpt4 key购买 nike

自上周以来,我一直在使用 PrimeFaces 3.1.1,它似乎是一个出色的可视化组件框架。我正在从 Richfaces 进行迁移,并试图让所有内容仅适用于 Prime 和 JSF2(2.1.6 版本)。

我的问题来自于我必须实现的动态工具栏。一些操作直接集成在工具栏上(commandButtons),其他操作内部有一些子操作,所以我必须用操作名称做一个 menuButton 并在此处添加每个操作,如菜单项。这是我的代码:

<h:panelGroup id="Texto_Header" layout="block">
<h:form>
<p:toolbar>
<p:toolbarGroup>
<!-- Operaciones de aplicación -->
<ui:repeat value="#{logedBean._apps}" var="opBean">
<!-- OPERACION PRINCIPAL EJECUTABLE -->
<h:panelGroup rendered="#{opBean._Clickable}">
<p:commandButton ajax="true" value="#{opBean._Nombre}"
action="#{opBean.actionOperationClick}" />
</h:panelGroup>
<!-- OPERACION PRINCIPAL CON SUBOPERACIONES -->
<h:panelGroup rendered="#{!opBean._Clickable}">
<p:menuButton value="#{opBean._Nombre}">
<ui:repeat value="#{opBean._subOperaciones}" var="opBean2">
<p:menuitem ajax="true" value="#{opBean2._Nombre}"
actionListener="#{opBean2.actionOperationClick}" />
</ui:repeat>
</p:menuButton>
</h:panelGroup>
</ui:repeat>
</p:toolbarGroup>
</p:toolbar>
</h:form>
</h:panelGroup>

我的问题是我只获得了第一个操作组件,它正确地呈现了命令按钮并且它们的 Action 运行良好,但是在“#{!opBean._Clickable}”的情况下我得到了一个带有名称的菜单按钮,但里面没有菜单项。看起来嵌入式 ui:repeat 迭代没有做好。

我使用 c:foreachc:choosec:otherwise 标签尝试了同样的机会,在这种情况下我得到了菜单在视觉上做得很好,commandButton 操作也运行良好,但是当我单击 menuItem 时,它说无法识别 opBean2...但是正如我之前所说,我更喜欢专门使用 JSF 标签。有办法吗?

最佳答案

我终于设法让它与 jsp 迭代标签一起工作,并更改 menuitem 标签的 actionListener 属性以获取 action 属性。这是我的代码:

    <h:panelGroup id="Texto_Header">
<h:form>
<p:toolbar>
<p:toolbarGroup>
<!-- Operaciones de aplicación -->
<c:forEach items="#{logedBean._apps}" var="opBean">
<!-- MAIN OPERATION -->
<h:panelGroup rendered="#{opBean._Clickable}">
<p:commandButton value="#{opBean._Nombre}"
action="#{opBean.actionOperationClick}" update=":linkPanel" />
</h:panelGroup>
<!-- OPERATION WITH SUBOPERATIONS -->
<h:panelGroup rendered="#{!opBean._Clickable}">
<p:menuButton value="#{opBean._Nombre}">
<c:forEach items="#{opBean._subOperaciones}" var="opBean2">
<p:menuitem value="#{opBean2._Nombre}"
action="#{opBean2.actionOperationClick}" update=":linkPanel" />
</c:forEach>
</p:menuButton>
</h:panelGroup>
</c:forEach>
</p:toolbarGroup>
</p:toolbar>
</h:form>
</h:panelGroup>

已编辑

它必须带有 jsp 标签,因为 Primefaces Toolbar没有特定的模型可以集成到支持 bean 中以便在页面呈现期间构建。所以它必须在页面构建中。 Primefaces TabView 也发生了类似情况但他们设法解决了这个问题,现在 tabView 有一个内置的迭代器。查看相关提示。

https://stackoverflow.com/a/4057370/1199132

已编辑 2

新的 PF MenuModel 似乎完全可以解决此类问题。它将能够在 bean 上以编程方式构建菜单。从 4.0 开始可用。

http://blog.primefaces.org/?p=2594

关于java - 如何制作 primefaces 动态工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com