嗨,我是Java世界的新手,我正在尝试使用Spring MVC创建自己的Web应用程序 . 现在,我将在本地目录中读取一个文本文件,例如,文本文件如下:
TestData_FileOne.txt
1,100
2,200
3,300
4,400
5,500
结果我想在这样的浏览器页面中显示(在表格中):
1 2 3 4 5
100 200 300 400 500
所以我实现了1)Controller,2)Model,以及3)View(.jsp文件) .
** 1)我的控制器和2)型号([Q1] [Q2])**
@Controller
public class TestController {
@RequestMapping("/testMVC")
public String testmvc(Model model){
String dirString = "C:/Users/Me/Documents/Test/";
Path testFile;
List<String> testData;
testFile = Paths.get( dirString + "TestData_FileOne.txt");
try {
testData = Files.readAllLines(testFile, StandardCharsets.UTF_8);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//return "unable to read...";
return "unable to read...";
}
// ====== changes from here based on Aeseir's answer========
List<String> dataNum = new ArrayList<String>();
List<String> data = new ArrayList<String>();
for(int i=0; i<testData.size()-1;i++){
dataNum.add(testData.get(i).split(",")[0]);
data.add(testData.get(i).split(",")[1]);
}
model.addAttribute("dataNum", dataNum);
model.addAttribute("data", data);
// ======= changes until here ==============
return "testMVC";
}
}
(当我检查System.out.println部分时,读取文本文件工作正常)
2) testMVC.jsp file
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<table>
<thread>
<tr>
<th>Table with dynamic data from model</th>
</tr>
</thread>
<tbody>
<c:forEach var="dataNumValue" items="${dataNum}"> [items added but.. Q5]
<tr>
<td>
${dataNumValue}
</td>
</tr>
</c:forEach>
<c:forEach var="dataValue" items="${data}"> [items added but.. Q5]
<tr>
<td>
${dataValue} --- [Q2']
</td>
</tr>
</c:forEach>
</tbody>
</table>
所以..我知道Q1 / Q1'应该匹配,Q2 / Q2'也是如此 .
1)但是,我对model.addAttribute(“”,object)中的对象感到困惑;在Q1,Q2?和addAttribute是模型属性中的正确选择?
2)在Q3,Q4中我是否需要var =“dataNum”和var =“data”并且我做得对吗?
如果我弄错了,我会感激任何建议 .
Extra Question 所以我已经更新控制器代码和JSP文件中像Aeseir的回答后,上述(谢谢!),但之后我添加的项目则警告(Q5),当然,该页面没有出现我在JSP文件中的警告 . [Q5]: warning : "items" does not support runtime expressions 我搜索了警告,然后检查jstl版本的建议 - 应该高于版本1.0 - My jstl version is 1.2. so shouldn't be any problem.... Can you check my changes part? and What else could cause this warning except jstl version? .
Solution for extra question 5 @taglib指令在jsp文件中应该是这样的:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> => / jsp在中间缺失
这个@taglib校正码基于Aeseir的答案改变了上面的答案一切正常!
1 回答
Q1和Q2
你快到了 . 模型将传递您放入其中的大部分数据 . 它取决于您的渲染页面,以确定如何显示它 .
您需要将类型更改为数组,因为您要输出多个字符串 .
Q3和Q4
是的,但你需要这样完成它:
希望有所帮助