2015-03-11 3 views
0

Я пытаюсь понять, как JSF UIData() работает программно в JSF. У меня следующий код:JSF UIData не отображает дочерние элементы UIColumn

UIInput input = new UIInput(); 
    UIInput input2 = new UIInput(); 

    UIOutput header = new UIOutput(); 
    header.setValue("Header"); 

    UIColumn column = new UIColumn(); 
    column.setHeader(header); 
    column.getChildren().add(input); 
    column.getChildren().add(input2); 

    UIData table = new UIData(); 
    table.getChildren().add(column); 

этот код рендеринга HTML, как:

<table> 
    <thead> 
    <tr> 
     <th scope="col">Header</th> 
    </tr> 
    </thead> 
    <tbody> 
     <tr> 
     <td></td> 
    </tr> 
    </tbody> 
</table> 

где мои два входа ?? я ожидаю что-то вроде:

..... 
    <tbody> 
     <tr> 
     <td> 
      <input type="text" /> 
     </td> 
    </tr> 
     <tr> 
     <td> 
      <input type="text" /> 
     </td> 
    </tr> 
    </tbody> 
    ...... 
+0

я также попробовать переключатель UIComponents (UIData, UIInput, UIColumn) в HtmlComponenets (HtmlDataTable, HtmlInputText, HtmlColumn), но по-прежнему такой же результат. пустой ряд. –

+0

У вас возникла бы такая же проблема при объявлении/создании компонентов с использованием XHTML (XML) вместо Java. Существует ** ничего **, что возможно только в Java, а не в XHTML, что касается объявления/создания компонентов. Преимущество XHTML в том, что код настолько читабельнее и удобнее в обслуживании. Только мои 2 цента, чтобы вы могли дважды подумать, если бы вы действительно продолжали в этом направлении. – BalusC

ответ

0

Я знаю, что делаю неправильно. Я должен установить коллекцию UIData для строк таблицы. Когда я установил

UIData table = new UIData(); 
    ArrayList list = new ArrayList(); 
    list.add("A"); 
    list.add("B"); 
    table.setValue(list); 

чем я получаю два ряда с моими входами