Данные поступают из списка, но не отображаются на странице - PullRequest
0 голосов
/ 24 марта 2012

Я пытаюсь получить данные и отобразить эти данные с помощью компонента Метка
но эти данные не видны на странице
все метки находятся в таблице-строке и строка увеличивается здесь, но строка не получает метку

package com.cerebrum.pages;    

    import java.util.ArrayList;   

    import java.util.List;    

    import org.apache.wicket.markup.html.basic.Label;   
    import org.apache.wicket.markup.html.form.Form;
    import org.apache.wicket.markup.html.list.ListItem;
    import org.apache.wicket.markup.html.list.ListView;
    import org.apache.wicket.model.CompoundPropertyModel;
    import org.apache.wicket.model.PropertyModel;

    import com.cerebrum.common.Home;
    import com.cerebrum.hibernate.AddForumSubCategoryEntity;
    import com.cerebrum.hibernate.ForumHome;
    import com.cerebrum.pojo.ForumModel;
    public class Forum extends Home
    {
    ForumHome forumHome=new ForumHome();
    ForumModel forumModel=new ForumModel();
    List<ForumModel> listForum=new ArrayList<ForumModel>();
    public Forum()
    {
        super();
        add(new ForumForm());
    }
    class ForumForm extends Form
    {
    public ForumForm()
    {
        super("ForumForm");
        setModel(new CompoundPropertyModel(forumModel));

        List<AddForumSubCategoryEntity> list=forumHome.getAll();
        for(AddForumSubCategoryEntity addForumSubCategoryEntity:list)
        {
            listForum.add(new    
      ForumModel(addForumSubCategoryEntity.getMain_key(),
      addForumSubCategoryEntity.getDescription()));
        }

        ListView listView=new ListView("listForum",listForum) 
        {
            @Override
            protected void populateItem(ListItem item)
            {
                ForumModel model=(ForumModel)item.getDefaultModelObject();

                 Label lblMainCategory=new Label("lblMainCategory",new    
     PropertyModel(model, "lblMainCategory"));
                item.add(lblMainCategory);

                 Label lblLastSubCategory=new   
     Label("lblLastSubCategory",new PropertyModel(model, "lblLastSubCategory"));
                item.add(lblLastSubCategory);

                 Label lblTotalNoofPost=new Label("lblTotalNoofPost",new  
     PropertyModel(model, "lblTotalNoofPost"));
                item.add(lblTotalNoofPost);
            }
        };
        listView.setOutputMarkupId(true);
        add(listView);
    }
}
}

1 Ответ

1 голос
/ 24 марта 2012

Старайтесь избегать создания этого промежуточного списка "listForum", было бы лучше, если бы в вашем forumModel был метод "getListForum", поэтому вам не нужно передавать модель в ListView. (см., как CompoundPropertyModels работает здесь https://cwiki.apache.org/WICKET/working-with-wicket-models.html).

И внутри вашего ListView вы используете "getDefaultModelObject ()" вместо "getModel", а затем вы используете это как модель для PropertyModel, это странно.

Я не полностью понимаю вашу модель (ForumHome или ForumModel реализуют IModel?), Но я думаю, что такой подход был бы лучшим подходом:

public class Forum extends Home {

private ForumHome forumHome = new ForumHome();
private ForumModel forumModel = new ForumModel( forumHome );

public Forum() {
    super();

    add(new ForumForm("ForumForm", forumModel));
}

private static class ForumForm extends Form {
    public ForumForm(String wicketId, ForumModel forumModel) {
        super(wicketId, new CompoundPropertyModel(forumModel));

        ListView<ForumModel> listView = new ListView<ForumModel>("listForum") {

            @Override
            protected void populateItem(ListItem item) {
                IModel<ForumModel> model = item.getModel();

                item.add( new Label("lblMainCategory", new PropertyModel(model, "lblMainCategory")) );
                item.add( new Label("lblLastSubCategory", new PropertyModel(model, "lblLastSubCategory")) );
                item.add( new Label("lblTotalNoofPost", new PropertyModel(model, "lblTotalNoofPost")));

            }
        };
        listView.setOutputMarkupId(true);
        add(listView);
    }
}
} 
...