Java Wicket-在Wicket表中动态添加列

Java Wicket-在Wicket表中动态添加列,java,html,json,listview,wicket,Java,Html,Json,Listview,Wicket,HomePage.java Table table = new Table(); List<String> listOfString = (List<String>) table.getList(); //accessing list from Table.java System.out.println("listOfString" + listOfString); //List -[name, abc, id, 101, photo, tr

HomePage.java

Table table = new Table();

List<String> listOfString = (List<String>) table.getList(); //accessing list from Table.java
    System.out.println("listOfString" + listOfString); //List -[name, abc, id, 101, photo, true, name, pqr, id, 102, photo, true, name, bcd, id, 103, photo, false ]

    List<UserList> listOfBean = new ArrayList<UserList>();

    System.out.println("list of my Bean" + listOfBean);
    
    
    for(int i=0;i<listOfString.size()-1;i+=2)
    {
        
    UserBean mybean = new UserBean(listOfString.get(i), listOfString.get(i+1));     
    
    listOfBean.add(mybean);
    System.out.println("list of loop bean:" + listOfBean);
        }
        
    System.out.println("list of bean:" + listOfBean);

    add(new ListView<UserBean>("listview", listOfBean) {
        protected void populateItem(ListItem<UserBean> item) {
            UserList myBean1 = item.getModelObject();
            item.add(new Label("name", myBean1.getName()));
            item.add(new Label("id", myBean1.getId()));
        }
    });
public class UserList {

private String name1;
private String type1;
private Boolean photo;

Table table = new Table("table");

List<String> list1 = (List<String>) table.getList();

public UserBean(String name1,String type1)
{
    super();
    
    this.name1 = name1;
    this.type1 = type1;
    
}

public UserBean(String name1,String type1,Boolean photo)
{
    super();
    
    this.name1 = name1;
    this.type1 = type1;
    this.setPhoto(photo);
}

public String getName1() {
    return name1;
}
public void setName1(String name1) {
    this.name1 = name1;
}
public String getType1() {
    return type1;
}
public void setType1(String type1) {
    this.type1 = type1;
}

public Boolean getPhoto() {
    return photo;
}

public void setPhoto(Boolean photo) {
    this.photo = photo;
}   
}
Table Table=新表();
List listOfString=(List)table.getList()//从Table.java访问列表
System.out.println(“listOfString”+listOfString)//列表-[姓名,abc,身份证,101,照片,真实,姓名,pqr,身份证,102,照片,真实,姓名,bcd,身份证,103,照片,假]
List listOfBean=new ArrayList();
System.out.println(“我的Bean列表”+listOfBean);

对于(inti=0;i,您需要比JavaBean更灵活的数据结构

最简单的解决方案是使用
List
。也就是说,列表中的每个元素都是另一个列表。第一个内部列表将显示列的名称。其余元素将显示单元格的值


我希望您能理解!祝您好运!

您需要一个比Java bean更灵活的数据结构

最简单的解决方案是使用
List
。也就是说,列表中的每个元素都是另一个列表。第一个内部列表将显示列的名称。其余元素将显示单元格的值


我希望你能明白我的意思!祝你好运!

从我在你上一个问题中读到的内容来看,我认为你想做这样的事情:

HomePage.html

<table class="table">
    <tr wicket:id="listview2">
        <td><span wicket:id="name"></span></td>
        <td><span wicket:id="id"></span></td>
        <td><span wicket:id="hasPhoto"></span></td>
    </tr>
</table>
HomePage.java

Table table = new Table();

    List<String> listOfString = (List<String>) table.getList();

    List<UserBean> listOfUserBean = new ArrayList<UserBean>();

    for (int i = 1; i < listOfString.size(); i += 6) {

        UserBean userBean = new UserBean(listOfString.get(i),
                listOfString.get(i + 2), Boolean.parseBoolean(listOfString
                        .get(i + 4)));

        listOfUserBean.add(userBean);
    }

    add(new ListView<UserBean>("listview2", listOfUserBean) {
        protected void populateItem(ListItem<UserBean> item) {
            UserBean userBean = item.getModelObject();
            item.add(new Label("name", userBean.getName()));
            item.add(new Label("id", userBean.getId()));
            item.add(new Label("hasPhoto", String.valueOf(userBean
                    .isHasPhoto())));
        }
    });
Table Table=新表();
List listOfString=(List)table.getList();
List listOfUserBean=新建ArrayList();
对于(int i=1;i
根据我在上一个问题中所读到的内容,我认为您希望执行以下操作:

HomePage.html

<table class="table">
    <tr wicket:id="listview2">
        <td><span wicket:id="name"></span></td>
        <td><span wicket:id="id"></span></td>
        <td><span wicket:id="hasPhoto"></span></td>
    </tr>
</table>
HomePage.java

Table table = new Table();

    List<String> listOfString = (List<String>) table.getList();

    List<UserBean> listOfUserBean = new ArrayList<UserBean>();

    for (int i = 1; i < listOfString.size(); i += 6) {

        UserBean userBean = new UserBean(listOfString.get(i),
                listOfString.get(i + 2), Boolean.parseBoolean(listOfString
                        .get(i + 4)));

        listOfUserBean.add(userBean);
    }

    add(new ListView<UserBean>("listview2", listOfUserBean) {
        protected void populateItem(ListItem<UserBean> item) {
            UserBean userBean = item.getModelObject();
            item.add(new Label("name", userBean.getName()));
            item.add(new Label("id", userBean.getId()));
            item.add(new Label("hasPhoto", String.valueOf(userBean
                    .isHasPhoto())));
        }
    });
Table Table=新表();
List listOfString=(List)table.getList();
List listOfUserBean=新建ArrayList();
对于(int i=1;i
您可能想检查
数据表
哪一个更适合此操作。请参阅:您可能想检查
数据表
哪一个更适合此操作。请参阅:非常感谢……但您能否以编程方式解释……如何将内部列表用作列,而将其余部分用作列表中的单元格值?非常感谢……但您能否以编程的方式解释…如何使用内部列表作为列,而rest作为列表中的单元格值?非常感谢@m.bouali对问题的解释如此之好…我已经编辑了这个问题..请参考一次。你能给我建议一种替代方法吗..不使用bean并动态添加行和列?非常感谢你对问题的解释如此之好@m.bouali…我已经编辑了这个问题..请参考一次.你能给我推荐一种替代方法吗..不使用bean和动态添加行和列吗?
Table table = new Table();

    List<String> listOfString = (List<String>) table.getList();

    List<UserBean> listOfUserBean = new ArrayList<UserBean>();

    for (int i = 1; i < listOfString.size(); i += 6) {

        UserBean userBean = new UserBean(listOfString.get(i),
                listOfString.get(i + 2), Boolean.parseBoolean(listOfString
                        .get(i + 4)));

        listOfUserBean.add(userBean);
    }

    add(new ListView<UserBean>("listview2", listOfUserBean) {
        protected void populateItem(ListItem<UserBean> item) {
            UserBean userBean = item.getModelObject();
            item.add(new Label("name", userBean.getName()));
            item.add(new Label("id", userBean.getId()));
            item.add(new Label("hasPhoto", String.valueOf(userBean
                    .isHasPhoto())));
        }
    });