如何以编程方式将渲染设置为PrimeFaces列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式将渲染设置为PrimeFaces列?相关的知识,希望对你有一定的参考价值。

我有一个phaseListener,应该将data属性设置为dataTable中的primefaces列

public class NewFeaturesListener implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent phaseEvent) {
        // Do nothing here
    }

    @Override
    public void beforePhase(PhaseEvent phaseEvent) {
        process(phaseEvent.getFacesContext().getViewRoot(), "column7WarrantyFix");
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    private void process(UIComponent component, String... ids) {
        // Go to every child
        for (UIComponent child : component.getChildren()) {
            // If component has a given ID then check if you can rendered it
            for (String id : ids)
                if (id.equals(child.getId())) {
                    child.setRendered(false);
                }

            // Process next node
            process(child, ids);
        }
    }
}

这是我的专栏

<p:column id="column7WarrantyFix">
    <f:facet name="header">
        <h:outputText value="#{appMsg.admin_warranty_fix}" />
    </f:facet>
    <h:selectBooleanCheckbox value="#{item.object.isWarrantyFix}">
        <f:ajax value="change" execute="@this" render="@form" 
             listener="#{MyBean.warrantyChanged}"/>
    </h:selectBooleanCheckbox>
</p:column>

但不幸的是没有任何反应。此列显示在界面中。但当我将primefaces p tag更改为“h:”时,一切正常。为什么我不能用primefaces做同样的事情?

答案

因为我正在重新发明轮子决定在Bean中使用这个逻辑

以上是关于如何以编程方式将渲染设置为PrimeFaces列?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改 p:dataTable 中 p:column 的渲染属性

如何以编程方式将 ListView 列标题属性 IsHitTestVisible 设置为 False?

如何以编程方式将 Silverlight Grid 布局 ColumnDefinition 宽度设置为“*”?

如何以编程方式将平面背景 UIColor 渲染为 UIToolbar 的背景?

有条件地渲染一个 primefaces 命令链接

如何以编程方式设置 Kendo UI 网格列宽