2015-09-12 2 views
0

Возможно, кто-то знает, почему я не могу отображать список категорий в своем приложении. В файлах категорий.xhtml отображаются только слова «Категории». Класс Category задает идентификатор и имя в конструкторе.JSF - Невозможно отобразить список объектов из ManagedBean

categories.xhtml

<ui:component> 
    <h:form> 
     <h4>Categories</h4> 
     <ul> 
      <ui:repeat var="category" value="#{categoriesBean.modelCategories}"> 
       <li><h:outputText value="#{category.name}"> 
        </h:outputText> 
        </li> 
      </ui:repeat> 
     </ul> 
    </h:form> 
</ui:component> 

CategoriesBean.java

@ManagedBean 
    @RequestScoped 
    public class CategoriesBean { 

     private ListDataModel<Category> modelCategories = new ListDataModel<Category>(); 

public ListDataModel<Category> getModelCategories() { 
    return modelCategories; 
} 

public void setModelCategories(ListDataModel<Category> modelCategories) { 
    this.modelCategories = modelCategories; 
} 
public CategoriesBean() { 
      modelCategories.setWrappedData(DAO.getDAO().getCategories()); 
     } 
    } 

DAO.java

public class DAO { 

    private static DAO instance = new DAO(); 
    private List<Category> categories = new ArrayList<Category>(); 

    { 
     Category smartphones = new Category(1, "Smartphones");  
     Category consoles = new Category(2, "Consoles"); 
     categories.add(smartphones); 
     categories.add(consoles); 

    } 

    public static DAO getDAO() { 
     return instance; 
    } 

    public List<Category> getCategories() { 
     return this.categories; 
    } 

Вот источник сайт:

<form id="j_idt2" name="j_idt2" method="post" action="/Shop/categories.xhtml" enctype="application/x-www-form-urlencoded"> 
<input type="hidden" name="j_idt2" value="j_idt2" /> 


     <ul> 
     </ul><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAAAAAAAAJVSQWvUQBR+Tbp2G1Zpt9KL6KkIgmSp2IuLuIvt0sXULqSCxYPOZqebWSfJOPOym/RQ8B8InoSKVw/e/AXVgyAo6FFv3j16dyaN3R704EBe8vK+9+Z773tvfkJFKAmLIzImboqMu5tEhVtEVOa+Hb1ffvTFBqsDDk/IoEMCTGQX5jGUVIUJH2TiVgvMqU2q2i7ox0Y4M3rIBriaSlh64BV1OYmH7nZ/RANsPvt8/9WCusItgEzohIrQJ30CB2Ab70CCa3Iyd48EVLlBEokkpjG697q3/3yv9GQiqMT8Ds0VlKeuC0o4N71wI06j00GB4BBEyfopUqWbXpo23ZaS5B5TmD39evHFB/LShpkuzCq2TwuW9mTWWJ10+e/sfCRIN/VMqPTJmMrdj29vPj/8tGWB5cF8wIlSd0lEEerFSBqGYcPXZOJh0wNH6ZxBUQNh+RjBkoZPJSOc7ZM+p81MiLEZEyhja7qbS/p6V6VxScZYTlG57V7P626slzjNee0fQBYJ7q7TPZJy7Bz/XGkLwfOd5DGNf72+unvYGrVqZnaTC7DYCDS/YSKZrpGFGHGAme13338cZZmWbe3/ZOtJNtblTgtk+M4hnJ+KtBMSbEvqa7Im6GigVShhlc0VE3FKx9i6kflssYHXbhSv6yfLVTWrpsPVso/cOBUDWj3BWEJkvwHxOyj9FQMAAA==" autocomplete="off" /> 
</form> 
+0

Можете ли вы показать класс 'Category', потому что этот код работает для меня. – Geinmachi

ответ

0

Вам не нужно вызвать список DataModel при использовании интерфейса: повторить:

 <ui:repeat var="category" value="#{categoriesBean.categories}"> 
      <li><h:outputText value="#{category.name}"> 
       </h:outputText> 
       </li> 
     </ui:repeat> 

Затем, когда вы будете звонить в службу он будет большую часть времени будет взаимодействие с базой данных, где Вы вводите услугу в ваш боб. Для этого вы должны использовать атрибут @PostConstruct (который не нужен в вашем случае).

@ManagedBean 
    @RequestScoped 
    public class CategoriesBean { 
     // this is not needed but that's how you'd get from db. 
     //@Inject 
     //private MyService service; 

     private List<Category> categories; 

     // getters and setters 

     @PostConstruct // in your case this is not needed but it is if you use injection 
     public void init() { 
      categories = yourService.getCategories(); // this is not needed. 
      //instead you can add it like this. 
      categories = new ArrayList<Category>(); 
      categories.add(1, "blabla"); 
     } 
    } 
+0

Все еще не работает – Valery

+0

@Valery вы проверили, что ваш список не имеет значения и его размер? – stephan

+1

@Valery и, пожалуйста, отредактируйте свое оригинальное сообщение с информацией. Вы разместили информацию в ответах, которые трудно прочитать при редактировании сообщения. – stephan

Смежные вопросы