gpt4 book ai didi

java - Wicket - 在 wicket 表中动态添加列

转载 作者:行者123 更新时间:2023-12-02 03:11:26 24 4
gpt4 key购买 nike

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()));
}
});

UserBean.java

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;
}
}

HomePage.html

<table class="table">
<tr wicket:id="listview2">
<td><span wicket:id="name"></span></td>
<td><span wicket:id="id"></span></td>
</tr>
</table>

我正在从 Table.java 访问 HomePage.java 中的列表值(它将数据库中的 json 转换为 LIST)。但是,使用上面的代码..我能够在不更改代码的情况下成功动态添加行,但不能动态添加列。每次我都需要在 HomePage.java 中定义一个构造函数 UserBean.java 和实例来添加列。

任何人都可以建议如何在 ListView 中动态添加列以在 Wicket Table 中显示的替代方法。

我只是一个初学者。任何帮助将不胜感激。提前谢谢您。

编辑-

表.java

String query="select row_to_json(t) from "
+ "(select array_to_json(array_agg(row_to_json(t))) as schema from (select name,type,photo from sample) t ) t";

JsonToWidget widget=new JsonToWidget();
JSONObject json=widget.getJsonForTableContent(query);
json.toString();
System.out.println(json);

JSONArray jsonarray = new JSONArray();
jsonarray.toString();

Iterator<String> iter=json.keys();
JSONArray array = json.getJSONArray("schema");
System.out.println("array"+array);

while(iter.hasNext())
{

String key = iter.next();
System.out.println("key:"+key);

JSONArray value = json.getJSONArray(key);
System.out.println("value"+value); // prints [{"name":"pqr","photo":false,"id":"101"},{"name":"bcd","photo":true,"id":"102"},{"name":"sadl","photo":false,"id":"103"},{"name":"123","photo":true,"id":"104"},{"name":"1234","photo":true,"id":"105"},{"name":"abc","photo":true,"id":"106"}]


for(int i=0;i<value.length();i++)
{
Iterator it = value.getJSONObject(i).keys();

while(it.hasNext())
{
String k = (String) it.next(); //prints keys in json
String v = value.getJSONObject(i).get(k).toString(); //prints values in json

list.add(k);
list.add(v);

}
}
System.out.println("array list:"+list); //prints - [name, pqr,photo, false, name, bcd, photo, true, name, sadl, photo, false, name, 123, photo, true, name, 1234 , photo, true, name, abc, photo, true]
}
}
public List<String> getList()
{
return list;

}
}

是否有任何其他方法可以直接在 add ListView 中使用 JSON 键值对(即在 HomePage.java 中的 add ListView 中读取 json)以在 Wicket Table 中显示而不使用 Bean 和创建实例从数据库中的 JSON 中动态添加列和行

最佳答案

根据我在您上一个问题中读到的内容,我认为您想做这样的事情:

主页.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>

UserBean.java

public class UserBean {

private String name;
private String id;
private boolean hasPhoto;

public UserBean(String name, String id, boolean hasPhoto) {
super();
this.name = name;
this.id = id;
this.hasPhoto = hasPhoto;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public boolean isHasPhoto() {
return hasPhoto;
}

public void setHasPhoto(boolean hasPhoto) {
this.hasPhoto = hasPhoto;
}
}

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())));
}
});

关于java - Wicket - 在 wicket 表中动态添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40994794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com