gpt4 book ai didi

java - 将列表分成更小的部分(可能使用 Wicket 口)

转载 作者:行者123 更新时间:2023-12-02 05:27:27 25 4
gpt4 key购买 nike

我制作了一个从属性文件加载查询的应用程序,例如 SELECT * FROM DATA。然后,所有这些数据一次加载到每一行中。第一次,我们将 id、姓名、电话、生日和部门这一行放入名为“标题”的列表中。然后我们将数据本身放入一个称为记录的列表中。之后,我们不再关注头条新闻,而是继续将数据加载到我们的记录列表中。

当我们使用 wicket 为我们显示表格中的数据时,结果是这样的: /image/z37hQ.png

如您所见,它只是打印出包含所有数据的整行。根据标题,我们希望所有数据都有单独的列。所以它应该类似于:

ID - 姓名 - 电话 - 生日 - 部门

123 - JOE - 10351053 - 2012 年 12 月 20 日 - 东。

我们如何做到这一点?我们的代码如下:

public class DataHandlerImpl implements DataHandler {

private final DataService dataService = new DataService();
private final List<Object> records = new ArrayList<>();

@Override
public String getPropertyValue() {
Properties prop = new Properties();
String propFileName = "sqlQuery.properties";

InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);
loadInputStreamCatchIOException(prop, inputStream);
fileNotFoundException(inputStream, propFileName);
String result = prop.getProperty("sqlQuery");
return result;
}

@Override
public Data getKeysAndValues() {
String queryFromPropertyFile = getPropertyValue();
List<HashMap<String, Object>> sqlQuery = dataService.getSqlQuery(queryFromPropertyFile);
List<String> headlines = new ArrayList<>(sqlQuery.get(0).keySet());
Collections.reverse(headlines);

createListOfRecords(sqlQuery, headlines);

return new DataImpl(headlines, records);
}

@Override
public int numberOfRecords() {
return getKeysAndValues().getRecords().size();
}

private void loadInputStreamCatchIOException(Properties prop, InputStream inputStream) {
try {
prop.load(inputStream);
} catch (IOException ex) {
Logger.getLogger(DataHandlerImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}

private void fileNotFoundException(InputStream inputStream, String propFileName) {
if (inputStream == null) {
try {
throw new FileNotFoundException("property file '" + propFileName + "
' not found in the classpath");
} catch (FileNotFoundException ex) {
Logger.getLogger(DataHandlerImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

private void createListOfRecords(List<HashMap<String, Object>>
sqlQuery, List<String> headlines) {
for (HashMap<String, Object> values : sqlQuery) {
List<Object> newRow = new ArrayList<>();
for (String record : headlines) {
newRow.add(values.get(record));
}
records.add(newRow);
}
}
}

并且

public class SimpleDataView extends SimpleDataViewPage {

IModel ldm;

public SimpleDataView() {
ldm = new LoadableDetachableModel<Data>() {

@Override
protected Data load() {
DataHandlerImpl dataHandler = new DataHandlerImpl();
return dataHandler.getKeysAndValues();
}
};
add(new Label("size", "Number of records: " + getData().getRecords().size()));

add(new Label("headlines", new Model<String>() {

@Override
public String getObject() {
return getData().getHeaders().toString();
}

}));

add(new Label("records", new Model<String>() {

@Override
public String getObject() {
return getData().getRecords().toString();
}

}));
}
}

并且

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">

<head>
<meta charset="utf-8" />
<title>Data presentation</title>
</head>
<body>
<h3>Data</h3>
<h4 wicket:id="size"></h4>
<table border="1">
<tbody>
<thead>
<td><a wicket:id="headlines" href="#">NAME</a></td>
</thead>
<td wicket:id="records">
</td>
</tbody>


</table>
</body>
</html>

如果需要任何进一步信息,请随时询问。

最佳答案

您可以使用 DataTable,如本示例所示:Wicket DataTable

DataTable 可以包含任意数量的列,这些列作为列列表传递到 DataTable。您可以定义每列显示的内容。

关于java - 将列表分成更小的部分(可能使用 Wicket 口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866974/

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