<p:dataTable>
관리 대상 빈에서 프로그래밍 방식으로 만드는 글로벌 필터를 추가하려고합니다. 테이블이 잘 작동하고 올바르게 렌더링되지만 마지막으로 추가 된 구성 요소 만 datatable
패싯에 렌더링됩니다. 여기에 내가 노력 코드입니다 : 일반 XHTML/Facelets의 코드처럼p : dataTable facet에 프로그래밍 방식으로/동적으로 구성 요소를 추가하는 방법
//config
FacesContext fc = FacesContext.getCurrentInstance();
Application application = fc.getApplication();
ExpressionFactory ef = application.getExpressionFactory();
ELContext elc = fc.getELContext();
//Table
table = (DataTable) application.createComponent(DataTable.COMPONENT_TYPE);
table.setId("tabexam");
table.setValue(listexam);
table.setVar("exam");
table.setWidgetVar("examTable");
table.setEmptyMessage("aucun résultat trouvé pour votre recherche");
table.setFilteredValue(filteredexams);
table.setPaginator(true);
table.setPaginatorPosition("bottom");
table.setRows(25);
table.setPaginatorTemplate("{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}");
table.setRowsPerPageTemplate("10,25,50,100");
/////////this is the part that regards this question///////////
/*
this is the HTML code that i want to translate to java code :
<f:facet name="header" >
<h:outputText value="Rechercher: "/>
<p:inputText id="globalFilter" onkeyup="examTable.filter();" style="width:200px" />
</f:facet>
*/
UIOutput tableTitle = (UIOutput) application.createComponent(UIOutput.COMPONENT_TYPE);
tableTitle.setValue("Rechercher :");
HtmlInputText globalfilterinput = (HtmlInputText) application.createComponent(HtmlInputText.COMPONENT_TYPE);
globalfilterinput.setId("globalFilter");
ValueExpression globalfilterJSaction = ef.createValueExpression(elc, "examTable.filter()", Object.class);
globalfilterinput.setValueExpression("onkeyup", globalfilterJSaction);
Map comps = new HashMap();
comps.put("header", tableTitle);
comps.put("header", globalfilterinput);
table.getFacets().putAll(comps);
///////////////////////////////////////////////////
//Index
Column indexColumn = (Column) application.createComponent(Column.COMPONENT_TYPE);
UIOutput indexColumnTitle = (UIOutput) application.createComponent(UIOutput.COMPONENT_TYPE);
indexColumnTitle.setValue("Index");
indexColumn.getFacets().put("header", indexColumnTitle);
//table.getColumns().add(column);
table.getChildren().add(indexColumn);
ValueExpression indexValueExp = ef.createValueExpression(elc, "#{exam.examen.studyPatientState}", Object.class);
HtmlOutputText indexOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
indexOutput.setValueExpression("value", indexValueExp);
indexColumn.getChildren().add(indexOutput);
//Name Column
Column nameColumn = (Column) application.createComponent(Column.COMPONENT_TYPE);
UIOutput nameColumnTitle = (UIOutput) application.createComponent(UIOutput.COMPONENT_TYPE);
nameColumnTitle.setValue("Name");
nameColumn.getFacets().put("header", nameColumnTitle);
table.getChildren().add(nameColumn);
ValueExpression nameValueExp = ef.createValueExpression(elc, "#{exam.examen.rapport.rapportOraleState}", Object.class);
HtmlOutputText nameOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
nameOutput.setValueExpression("value", nameValueExp);
nameColumn.getChildren().add(nameOutput);
내가 사람을 말할 수있는 무엇, 당신은 또한 내가 column.setFilterBy()와 column.setSortBy (문제가있어, 감사합니다, 다만 천재 야) 또는 나는이에 대해 별도의 질문을해야한다. –
반갑습니다. 예. 별도의 질문을하십시오. 현재 질문에서 프로그래밍 방식으로 패싯을 만드는 것과는 아무 관련이 없습니다. – BalusC
괜찮습니다, 다시 한번 감사드립니다. –