2017-05-30 42 views
0

我開始在春天mvc做一個項目,我從jsp獲取類型到控制器時有一些疑問。問題在春天MVC持續數據

目前我有(JSP):

<form method="POST" action="pb.html">   
<h2>Description: <textarea style="resize:none;" name="description" form="usrform" maxlength="47"></textarea><h2> 
<br>   
Number: <input type="number" min="1" value="1" name="number" /> 
<input type="submit" value="Create Volume" /> 
</form> 

我的控制器:

package book; 

import javax.servlet.http.HttpServletRequest; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class BookController { 

@Autowired 
private BookDao bookDAO; 

@RequestMapping(value="/book") 
public ModelAndView BOOKSTORE(HttpServletRequest request) { 
String description = request.getParameter("description"); 
String number = request.getParameter("number"); 

if(description != null && number != null)  
bookDAO.persist(new Book(description, Integer.parseInt(number))); 

// Prepare the result view (book.jsp): 
return new ModelAndView("book.jsp", "bookDao", bookDAO); 
} 
} 

看來,我的數據沒有被持久化,因爲該位指示不能轉換的textarea成一個字符串,由於某種原因它不能改變這個數字。

有些網站說,在JSP中使用以下命令:

<h2>Description: <input type="text" name="description"></input><h2> 
<br>   
Number: <input type="text" name="number" /> 

但是,這沒有任何意義對我來說,因爲我希望用戶查看完整的描述(所以我需要一個文本區域)和我只希望用戶在數字字段上鍵入數字,因此使用該數字更有意義。

任何人都可以幫助我嗎?

問候

+1

將存儲的書籍不是Dao添加到模型中,並使用彈簧窗體標籤來綁定結果。 –

回答

0

嘗試使用此代碼

@RequestMapping(value="/book") 
public ModelAndView BOOKSTORE(HttpServletRequest request, ModelAndView mav) { 
String description = request.getParameter("description"); 
String number = request.getParameter("number"); 

Book book=new Book(); 
if(description != null && number != null){ 
    book=new Book(description, Integer.parseInt(number)); 
    bookDAO.persist(book); 
} 

mav.setViewName("book"); 
mav.addObject("book", book); 
return mav; 
} 
} 
+0

有了這段代碼,我得到一個錯誤:javax.servlet.ServletException:java.lang.InstantiationException:未在範圍內找到bean bookDao –

+0

我也必須更改mav.setViewName(「book」);到mav.setViewName(「book.jsp」); ,否則我會得到一個錯誤404 –

+0

如果我改變mav.addObject(「書」,書); mav.addObject(「bookDao」,bookDAO);該程序不會給我一個錯誤,但也不會持續顯示任何東西,當我點擊提交。 –

0

問題解決了,

我必須通過數作爲一個字符串到java類和java類,我沒有空內驗證:

控制器:

@RequestMapping(value="/book") 
public ModelAndView BOOKSTORE(HttpServletRequest request) { 
String description = request.getParameter("description"); 
String number = request.getParameter("number"); 

if(description != null)  
bookDAO.persist(new Book(description, number)); 

// Prepare the result view (book.jsp): 
return new ModelAndView("book.jsp", "bookDao", bookDAO); 
} 

的Java:

/** 
* 
* @param description 
* @param number 
*/ 
public Book(String description, String number){ 
    this.pbi_description = description; 

    if(number!= null) 
     this.number= Integer.parseInt(number); 
} 

然而,應該可以做到這一點的驗證控制器。

+0

解決了這個問題,我的jsp出現了一個問題,我把這個數字當成了一個列表。 –