有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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页面上显示数据


共 (2) 个答案

  1. # 1 楼答案

    Spring使用HandlerMethodArgumentResolver接口处理处理程序方法参数。处理@ModelAttributeServletModelAttributeMethodProcessor的实现具有更高的优先级(在处理ModelMapMapMethodProcessor的实现之前注册)

    这意味着Spring将创建一个ModelMap对象,并将其放入带有键""Model中。您可以从JSP使用空键访问该属性,并通过它访问其元素(从ResultSet添加的嵌套属性)

    最好的解决方案是从方法参数中去掉@ModelAttribute注释

  2. # 2 楼答案

    您只需删除注释@ModelAttribute(“”)

    顺便说一下,您应该重新考虑将业务和数据访问逻辑移动到服务和DAO层