kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

フロント側をFlutter(スマホ)Thymeleaf(PC)、バックエンド側SpringBootの自動作成勉強中

9:11
①バックエンド側SpringBootのController。「XXXXXXForm」部分をどうするか(@RequestBodyは1つしか書けないらしい)とか、@PageableDefault部分とか、Pageableの件。一昨日、『③SpringBoot側のユーザー情報検索条件■Flutter用Controllerのユーザー情報一覧部分。Flutterと、PCの両方共通Controller(UserCommController )を継承している。』で、とりあえず最低限動いたが、@PageableDefault部分とか、Pageableについてはまだ、検討していなかった。
ので、検討してみる。

public class UserFlutterController extends UserCommController {
・・・
	@SuppressWarnings("unchecked")
	@PostMapping("/members/admin/user/userA/list")
	@ResponseBody
	public Map<String, Object> userListFlutter(@RequestBody UserSrchFForm userSrchFForm,
			Model model, 
			@PageableDefault(
					  			size=pageableDefaultSize
	                          ) 
			  Pageable pageable) {

の、pageableに、Flutter用のユーザー検索Form

public class UserSrchFForm extends UserSrchForm implements Serializable {
・・・
	private String page;

のpageの値が入ってくるか否か検証してみる。とりあえずFlutterがわで、page="2"として、SpringBootのControllerで取り込めるかをやってみる。
結果:やはり、Pageable.pageに値が入らない。
更に、試しに、もしかしたら、こうやったら入ったりして、とおもって、

public class UserFlutterController extends UserCommController {
・・・
	@SuppressWarnings("unchecked")
	@PostMapping("/members/admin/user/userA/list")
	@ResponseBody
	public Map<String, Object> userListFlutter(@RequestBody UserSrchFForm userSrchFForm,UserSrchFForm userSrchFForm2,
			Model model, 
			@PageableDefault(
					  			size=pageableDefaultSize
	                          ) 
			  Pageable pageable) {

としたが、userSrchFForm2には値が入らない。
更に、ネットではだめだと言われている「@RequestBody」を2個使う

public class UserFlutterController extends UserCommController {
・・・
	@SuppressWarnings("unchecked")
	@PostMapping("/members/admin/user/userA/list")
	@ResponseBody
	public Map<String, Object> userListFlutter(@RequestBody UserSrchFForm userSrchFForm,@RequestBody UserSrchFForm userSrchFForm2,
			Model model, 
			@PageableDefault(
					  			size=pageableDefaultSize
	                          ) 
			  Pageable pageable) {

としたが、やはりネット情報の通り例外発生(「org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is java.io.IOException: Stream closed」)なので、@RequestBody は1つしか書けない。
・・・結果:やはり一昨日、『■Flutter用のユーザー検索Form。controllerで@RequestBodyで取得できるクラスが1つだけみたいなので、Flutter向け検索条件+ソート条件+ページ番号をまとめた物をユーザー検索Form(UserSrchFForm←UserSrchForm)にする。』しかやり方がないみたいだ。
ということで、「Pageable」はメソッドの中で作るようにしないといけないと思われる。
そうだ、「@PageableDefault部分」はこのままいけるかも。というのは、pageable.sizeに10が入っていたから。

②@PageableDefault部分とか、Pageableについて続いて検討中
22:29
とりあえず、以下のやり方(「@PageableDefault部分」は削除し「Pageable」はメソッドの中で作る)でやる予定。問題は次の「list_do」でページングがうまくできるかだ。

public class UserFlutterController extends UserCommController {
・・・
	@SuppressWarnings("unchecked")
	@PostMapping("/members/admin/user/userA/list")
	@ResponseBody
	public Map<String, Object> userListFlutter(@RequestBody UserSrchFForm userSrchFForm,
			Model model) {
		SrchOrderForm srchOrderForm = new SrchOrderForm();
		UserSrchForm userSrchForm = (UserSrchForm)userSrchFForm;
		int page = ObjectUtils.isEmpty(userSrchFForm.getPage())||userSrchFForm.getPage().equals("0")?0:Integer.parseInt(userSrchFForm.getPage())-1;
	    Pageable pageable = PageRequest.of(page, pageableDefaultSize, Sort.unsorted());
		return (Map<String, Object>)userListComm(userSrchFForm, userSrchForm, srchOrderForm, model,pageable, true);
	}||<
■2022/06/15に、Flutter_JavaSpringプログラム自動作成◎自動生成ツールをVectorに載せました。Zenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
[https://www.vector.co.jp/soft/winnt/prog/se524431.html:embed:cite]

・Zenn本(Flutter_JavaSpringプログラム自動作成)