SpringMVCでデータ送信(POST)する
SpringMVCでテキストボックスに入力したデータを次画面に表示するサンプルです。
初期表示のコントローラです。
package jp.co.confrage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("sample")
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping(value = "home", method = RequestMethod.GET)
public String home(Model model) {
logger.info("Welcome Sample Page.");
model.addAttribute(new HomeForm());
return "home";
}
}
ModelにHomeFormをaddしないと、以下のエラーが出ます。
Neither BindingResult nor plain target object for bean name 'homeForm' available as request attribute
初期表示のjspです。共通ヘッダはweb.xmlに定義します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> Welcome Sample Page. </P>
<form:form action="post" method="post" modelAttribute="homeForm">
<form:label path="keyword">入力</form:label>
<form:input path="keyword" />
<form:errors path="keyword" cssStyle="color:red" />
<input type="submit" value="送信" />
</form:form>
</body>
</html>
フォームは以下です。Lombokを使用しているのでコンストラクタ、getter,setterは記述していません。
package jp.co.confrage;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HomeForm implements Serializable {
private static final long serialVersionUID = 1L;
private String keyword;
}
送信ボタン押下時のコントローラです。
package jp.co.confrage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("sample")
public class PostController {
private static final Logger logger = LoggerFactory.getLogger(PostController.class);
@RequestMapping(value="post", method=RequestMethod.POST)
public String aiueo(HomeForm form, Model model) {
logger.info("Post : " + form.getKeyword());
model.addAttribute("postData", form.getKeyword());
return "post";
}
}
form.getKeyword()に値がセットされています。
表示するJSPです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> Time on the server is ${postData}. </P>
</body>
</html>
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント