2017-01-14 80 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