# 因為字打錯導致html無法顯示頁面 ## 問題 想要寫一個html頁面顯示如下  過程卻報500錯誤  ## 程式碼內容 ### Controller層 ```java= @Controller @RequestMapping("/book") public class BookController { //controller調 service層 @Autowired @Qualifier("BookServiceImpl") private BookService bookService; //查詢全部的書籍,並返回到一個書籍展示頁面 @RequestMapping("/allBook") public String list(Model model){ List<Books> list = bookService.queryAllBook(); model.addAttribute("list",list); return "allBook"; } } ``` ### Dao層 ```java= public interface BookService { //增加一本書 int addBook(Books books); //刪除一本書 int deleteBookByID(int id); //更新一本書 int updateBook(Books books); //查詢一本書 Books queryBookById(int id); //查詢全部的書 List<Books> queryAllBook(); } ``` ### Service層 ```java= public class BookServiceImpl implements BookService{ //service調dao層:組合dao層 private BookMapper bookMapper; public void setBookMapper(BookMapper bookMapper) { this.bookMapper = bookMapper; } @Override public int addBook(Books books) { return bookMapper.addBook(books); } @Override public int deleteBookByID(int id) { return bookMapper.deleteBookByID(id); } @Override public int updateBook(Books books) { return bookMapper.updateBook(books); } @Override public Books queryBookById(int id) { return bookMapper.queryBookById(id); } @Override public List<Books> queryAllBook() { return bookMapper.queryAllBook(); } } ``` 從Controller層到Service層看來,程式碼應該都沒問題(因為都是直接照搬) 那問題究竟是出在哪裡? ### 可能的疑點 #### 1.編碼不同 可能資料庫使用的編碼與java程式碼不同,導致顯示錯誤 #### 2.資料類型不同 資料庫使用的類型為varchar,可能與java的detail類型不同 #### 解法:(好心人建議,雖然我還是看不太懂) 你看你用的資料庫軟體有沒有辦法看到使用的編碼是甚麼,可能會像是 utf8mb4_unicode_ci 這樣的,或其他的格式 先確定源頭的編碼是 unicode 還是像 big5/gb2312 這種只能用在特定編碼的環境下的 如果是 unicode 的話,你先不要顯示在 jsp 上,先直接讀出來寫檔案,看文字有沒有變亂碼,若有,那應該是讀取的時候編碼錯了,所以導致 jsp 在處理的時候出問題 ### 真正的原因與解法 是出在**打錯字**... 原本book類中的屬性detail,誤寫為details 導致java無法用"datails"找到資料庫的"detail" 因此造成無法顯示報500的錯誤 原因異常簡單,但卻繞一大圈遠路才找到解法 ```java= @Data @AllArgsConstructor @NoArgsConstructor public class Books { private int bookID; private String bookName; private int bookCounts; private String detail; //这里打错了 你写的details 和数据库匹配不上 } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up