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:», все работает. Почему я не могу сделать то же самое с первичными?
Почему вы используете фазовый прослушиватель в первую очередь? Вы должны иметь возможность условно отображать компонент в управляемом компоненте. – Tiny
Вы изобретаете колесо, поскольку PF уже предоставляет атрибут 'rendered' для своих столбцов. Кроме того, JSF добавляет идентификаторы родительского элемента к своим компонентам, и вы ищете их с точным совпадением в вашем методе. –