2017-05-30 2 views
0

spring mvcでプロジェクトを作成し始めています.jspからコントローラにタイプを取得する際に疑問があります。spring 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); 
} 
} 

contollerは文字列にテキストエリアを変換することはできませんので、私のデータが永続化されていないようです何らかの理由で番号を変換できません。

いくつかのサイトは、次の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( "book"、book); mav.addObject( "bookDao"、bookDAO);プログラムは私にエラーを与えませんが、私がサブミットをクリックすると何も表示されずに持続しません。 –

0

問題を使用しようと、

私はJavaクラスに文字列として番号を渡すために持っていたし、Javaクラス内で私がnullをしました検証:

コントローラ:

@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に問題がありました。私はその番号をリストに入れました。 –

関連する問題