2017-01-14 56 views
0

我已经构建了一个简单的应用程序来使用JQuery Data table + Spring + DB显示一些数据。数据显示为一张表格。某些Spring模型属性不显示在我的JSP中

我最初建立了我的后端模型+数据库(MongoDB)+视图与两个属性显示正常。

但是现在,当我向所有图层添加更多属性时,JSP并未向我显示新增属性的值。

我检查过我的控制器在模型中发送了正确的值作为对我的JSP的响应。看起来JSP内的JSTL标签没有显示正确的值。

我在我的模型中有5个属性。

名称,年份,导演,评级,排名。

姓名和年份都是在工作正常前加入的。

导演,评级和排名是后来添加,并没有工作。下面我给出了我的模型类的代码。

下面是我的JSP代码

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>My Movie Manager</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <link rel="stylesheet" href="main.css" /> 
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.css"> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
    <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.js"></script> 

    </head> 
    <body> 
    <h1>Welcome to My movie manager</h1> 
     <h3>My ranking of movies</h3> 
     <input type="button" value="Add a new movie" id="addbtn" /> 
     <input type="button" value="Select and remove a movie" id="delbtn" /> 
     <br><br> 
     <table id="table_id" class="display"> 
     <thead> 
      <tr> 
       <th>My Ranking</th> 
       <th>Name</th> 
       <th>Year</th> 
       <th>Rating</th> 
       <th>Director</th> 

      </tr> 
     </thead> 
     <tbody> 
      <c:forEach items="${movieslist}" var="movie"> 
      <tr> 
       <td>$(movie.ranking)</td> 
       <td>${movie.name}</td> 
       <td>${movie.year}</td> 
       <td>$(movie.rating)</td> 
       <td>$(movie.director)</td> 
      </tr> 

      </c:forEach> 
     </tbody> 
    </table> 
</body> 
<script> 

$(document).ready(function() { 
    var table = $('#table_id').DataTable(); 
    $('#addbtn').click(addrow); 
    $('#delbtn').click(delrow); 


    table.on('click', 'tr', function() { 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
     } 
     else { 
      table.$('tr.selected').removeClass('selected'); 
      $(this).addClass('selected'); 
     } 
    }); 
}); 
</script> 
</html> 

下面是我的春天控制器

@Controller 
@RequestMapping("/movies") 
public class MovieController{ 

    protected final Log logger = LogFactory.getLog(getClass()); 

    @RequestMapping(method = RequestMethod.GET) 
    public String getMovies(Model model) { 
     // TODO Auto-generated method stub 
     logger.info("returning hello view"); 
     List<Movies> moviesList = DbManager.getInstance().getMovies(); 

     model.addAttribute("movieslist", moviesList); 
     return "hello"; 
    } 
} 

下面是我的领域类

package springapp.domain; 

import org.springframework.data.annotation.Id; 
import org.springframework.data.mongodb.core.mapping.Document; 
@Document(collection = "movies") 
public class Movies { 

    @Id 
    public String _id; 

    public String name; 
    public String year; 
    public String director; 
    public float rating; 
    public int ranking; 
    public int getRanking() { 
     return ranking; 
    } 

    public void setRanking(int ranking) { 
     this.ranking = ranking; 
    } 

    public String getDirector() { 
     return director; 
    } 

    public void setDirector(String director) { 
     this.director = director; 
    } 

    public float getRating() { 
     return rating; 
    } 

    public void setRating(float rating) { 
     this.rating = rating; 
    } 

    public String getYear() { 
     return year; 
    } 

    public void setYear(String year) { 
     this.year = year; 
    } 

    public String getId() { 
     return _id; 
    } 

    public void setId(String _id) { 
     this._id = _id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 



    @Override 
    public String toString() { 
     // TODO Auto-generated method stub 
     return name; 
    } 

} 
+0

打开控制台,看看你有一个JavaScript错误的地方。 – duffymo

+0

已经检查过了......没有错误发生......清除了缓存......但仍然是同样的问题 – saurav

+0

https://docs.spring.io/docs/Spring-MVC-step-by-step/part1 .html#step1.8 – duffymo

回答

1

请更正如下图所示:

  1. 使用$ {}否$()。它应该是

      <td>${movie.myranking}</td> 
          <td>${movie.name}</td> 
          <td>${movie.year}</td> 
          <td>${movie.rating}</td> 
          <td>${movie.director}</td> 
         </tr> 
    
    
        </tbody> 
    
+1

phew ...成为有史以来最愚蠢的错误之一:) ...非常感谢Barath – saurav