フロント側を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プログラム自動作成)