因此,我想从文本文件中读取数据,并在JSP页面中以表格格式显示记录。我尝试了以下代码,但现在它在一列中显示所有内容。我想以适当的表格格式显示它。我哪里做错了?任何人都可以纠正我的错误。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if data.count > 0 {
return data.count
}
else{
let image = UIImage(named: "Nature")
let noDataImage = UIImageView(image: image)
noDataImage.frame = CGRect(x: 0, y: 0, width: tableView.bounds.width, height: tableView.frame.height)
tableView.backgroundView = noDataImage
tableView.separatorStyle = .none
return 0
}
}
这些是记录保存在我的文本文件中的方式
<%@page import="java.io.File"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
<%
FileReader fr = new FileReader(new File(("C:\\Users\\user\\Documents\\NetBeansProjects\\JavaWebApp\\src\\java\\com\\servlets\\records.txt")));
BufferedReader br = new BufferedReader(fr);
String line = null;
out.println("<table>");
out.println("<tr>");
while((line = br.readLine()) != null){
//out.print(line + "<br/>");
String[] data = line.split("\t");
for (String val : data) {
out.println("<td>" + val + "</td>");
out.println("</tr>" );
}
}
out.println("</table>");
br.close();
%>
我的代码结果显示如下
James 1 0098765 California
Maureen 2 0078657 Texas
答案 0 :(得分:0)
代码中的小调整因为表格行格式不正确:
while((line = br.readLine()) != null){
out.println("<tr>"); //moved inside `while-loop`
String[] data = line.split("\t");
for (String val : data) {
out.println("<td>" + val + "</td>");
}
out.println("</tr>" ); //moved outside of `for-loop`
}
答案 1 :(得分:0)
首先,不要使用Java代码生成HTML代码。首先读取并处理数据,然后使用JSTL显示它们:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.io.*, java.util.*"%>
<!DOCTYPE html>
<%
List<List<String>> lines = new ArrayList<>();
String path = "C:\\Users\\user\\Documents\\NetBeansProjects\\JavaWebApp\\src\\java\\com\\servlets\\records.txt";
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
while((line = br.readLine()) != null){
List<String> values = new ArrayList<>();
String[] data = line.split("\t");
for (String val : data) {
data.add(val);
}
lines.add(values);
}
request.addAttribute("lines", lines);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<table>
<c:forEach var="line" items="${lines}">
<tr>
<c:forEach var="value" items="${line}>
<td>${value}</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>
其次,避免将业务逻辑(即读取和处理文件)放入JSP中 - 使用MVC pattern,或者至少将代码提取到单独的Java类中并调用该类的方法以获取用于显示的数据。