【问题标题】:How to dynamically add <p:tab> to <p:wizard> in a loop如何在循环中动态地将 <p:tab> 添加到 <p:wizard>
【发布时间】:2015-06-26 09:25:12
【问题描述】:

我想在循环中动态添加&lt;p:tab&gt;组件到&lt;p:wizard&gt;组件。

我尝试在&lt;p:wizard&gt; 组件内外使用&lt;ui:repeat&gt;

<p:wizard>
    <ui:repeat value="#{tabBean.tabs}" var="tab">
        <p:tab title="#{tab.tabname}">
    </ui:repeat>
</p:wizard>
<ui:repeat value="#{tabBean.tabs}" var="tab">
    <p:wizard>
        <p:tab title="#{tab.tabname}">
    </p:wizard>
</ui:repeat>

这两种尝试都不起作用。我怎样才能达到我的要求?

【问题讨论】:

    标签: jsf dynamic primefaces tabs wizard


    【解决方案1】:

    &lt;p:wizard&gt; 只理解 &lt;p:tab&gt; 孩子。它不理解&lt;ui:repeat&gt; 孩子。您需要在 JSF 组件树中创建物理 &lt;p:tab&gt; 子级作为 &lt;p:wizard&gt; 组件的直接子级。

    &lt;c:forEach&gt; taghandler 能够做到这一点。

    <p:wizard>
        <c:forEach items="#{tabBean.tabs}" var="tab">
            <p:tab title="#{tab.tabname}">
        </c:forEach>
    </p:wizard>
    

    另见:

    【讨论】:

    • 但请记住,在执行向导的过程中不能添加选项卡。 c:foreach 循环在视图构建时执行一次。所以“动态添加”更像是“动态创建一次”
    • @Kukeltje:完成后重建视图。可以通过setViewRoot(getViewId())完成。
    • 不做ajax不是一样吗?只是整页刷新?大多数情况下,这不是(imo)人们动态添加的意思。虽然这种情况可能会有所不同……
    • @Kukeltje:不,这完全是服务器端的。只有视图范围的 bean 会死掉并重新创建,但这是一个不同的问题 :) 也可以重新加载整页,但你知道,它很笨拙。
    • :-)... 但是您仍然可以将所有选项卡作为 html 传输(我假设整个页面,或者例如 update="wizardId" 仍然很荣幸?)这就是我的意思。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2011-05-11
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多