2016-05-10 1 views
0

я хочу добавить динамически в новый р: SelectOneMenu к моему panelGrid здесьДобавить новый р: SelectOneMenu на страницу JSF динамически из подкладочного боба

<h:panelGrid id="panel_grid" columns="1" style="margin-bottom:10px"cellpadding="5" > 

    <p:outputLabel for="firstQuestionDropDown" value={InsererAffaireController.firstQuestion.libeleQuestion}" 
    <p:selectOneMenu id="firstQuestionDropDown" value="#{InsererAffaireController.firstQuestion.libeleQuestion}" style="width:150px"> 
     <p:ajax listener="#{InsererAffaireController.displayNextQuestion()}" update="panel_grid" /> 
     <f:selectItems value="#{InsererAffaireController.firstQuestion.listLibeleReponses}" /> 
    </p:selectOneMenu> 

      <!-- Here i want to add my new SelectOneMenu -->  
</h:panelGrid> 

мне удалось сделать это с управляемым боба но проблема заключается в том, что я не могу заполнить новую SelectOneMenu и я не знаю, как добавить AF: selectItems к нему здесь метод, добавить новый р: SelectOneMenu к сетке панели, но она по-прежнему пуст

public void displayNextQuestion() { 
     nextQuestion = getNextQuestion(); 
     OutputLabel nextQuestionLabelUI = new OutputLabel(); 
     nextQuestionLabelUI.setValue(nextQuestion.getLibeleQuestion()); 

     SelectOneMenu nextQuestionDropDown = new SelectOneMenu() ; 

     List<SelectItem> selectItems = new ArrayList<>(); 

     for (String s : nextQuestion.getListLibeleReponses()) { 

     selectItems.add(new SelectItem(s, s)); 
     System.out.println(selectItems.get(0).getLabel()); 
     } 
     // How can i add the selectitems to the SelectOneMenu 
     UIComponent panelGrid = findComponent("panel_grid"); 
     panelGrid.getChildren().add(nextQuestionLabelUI); 
     panelGrid.getChildren().add(nextQuestionDropDown) ; 
     RequestContext.getCurrentInstance().update("panel_grid"); 

} 
+0

Все это неправильный подход. Правильный подход показан здесь: http://stackoverflow.com/q/3409053 – BalusC

+0

Я пробовал ваш подход, и это работает для меня, но вы могли бы рассказать мне, почему добавление новых компонентов пользовательского интерфейса из управляемого компонента является неправильным? – LattaliAhmed

+1

Очень многословный и громоздкий для обслуживания. XML + XHTML - это язык, гораздо более подходящий для объявления древовидных структур, чем Java. – BalusC

ответ

1

Вы можете использовать класс UISelectItems следующим образом:

... 
UISelectItems selectItemsComponent = new UISelectItems(); 
selectItemsComponent.setValue(selectItems); 
nextQuestionDropDown.getChildren().add(selectItemsComponent); 
... 
Смежные вопросы