java我无法访问JSP页面中的modelmap值
我在重构代码,最终删除了一个bean。ModelMap值被正确传递,并显示在有该bean的JSP页面上。然而,现在我直接从数据库中提取数据,但即使数据读取正确,我也无法访问JSP页面上的那些值
我有点像:-
public String viewData(@ModelAttribute("") ModelMap model) {
Connection conn = null;
ResultSet rs = null;
String driver = "com.mysql.jdbc.Driver";
Statement statement = null;
try{
Class.forName(driver);
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testing1234","root","root");
statement = conn.createStatement();
String sql = "SELECT * FROM testdata";
rs = statement.executeQuery(sql);
while (rs.next()) {
model.addAttribute("test", rs.getString(1));
model.addAttribute("test1", rs.getString(2));
model.addAttribute("test2", rs.getString(3));
model.addAttribute("test3", rs.getString(4));
model.addAttribute("test4" ,rs.getDate(5));
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
try {
if (rs != null) {
rs.close();
}
if (statement != null) {
statement.close();
}
if (conn!= null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return "jsppage";
}
但是,在我的JSP页面中,当我尝试访问${test}时,会得到一个空字符串。是否有其他方法可以解决这个问题,以便我可以在JSP页面上显示数据
# 1 楼答案
Spring使用
HandlerMethodArgumentResolver
接口处理处理程序方法参数。处理@ModelAttribute
、ServletModelAttributeMethodProcessor
的实现具有更高的优先级(在处理ModelMap
、MapMethodProcessor
的实现之前注册)这意味着Spring将创建一个
ModelMap
对象,并将其放入带有键""
的Model
中。您可以从JSP使用空键访问该属性,并通过它访问其元素(从ResultSet
添加的嵌套属性)最好的解决方案是从方法参数中去掉
@ModelAttribute
注释# 2 楼答案
您只需删除注释@ModelAttribute(“”)
顺便说一下,您应该重新考虑将业务和数据访问逻辑移动到服务和DAO层