2015-03-20 2 views
0

У меня есть phaseListener, что необходимо установить вынесенное свойство столбца primefaces в DataTableКак настроить рендеринг в столбце PrimeFaces programmaticaly?

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> 

, но, к сожалению, ничего не происходит. этот столбец отображается в интерфейсе. но когда я заменяю p-теги pairs на «h:», все работает. Почему я не могу сделать то же самое с первичными?

+1

Почему вы используете фазовый прослушиватель в первую очередь? Вы должны иметь возможность условно отображать компонент в управляемом компоненте. – Tiny

+0

Вы изобретаете колесо, поскольку PF уже предоставляет атрибут 'rendered' для своих столбцов. Кроме того, JSF добавляет идентификаторы родительского элемента к своим компонентам, и вы ищете их с точным совпадением в вашем методе. –

ответ

0

как я изобретал колесо, решил использовать эту логику в Bean