フロント側をFlutter(スマホ)Thymeleaf(PC)、バックエンド側SpringBootの自動作成勉強中
16:38
①昨日の『とりあえず、以下のやり方(「@PageableDefault部分」は削除し「Pageable」はメソッドの中で作る)でやる予定。問題は次の「list_do」でページングがうまくできるかだ。』をやっている。
■MouseComputerのノートPCのjavaSpringBootプログラム側はこんな感じにした。
・Flutter向け
public class UserFlutterController extends UserCommController { ・・・ /** * ユーザー情報リスト一覧表示処理 * 検索ボタン押下により、ユーザー情報リスト一覧を表示する処理 * * @param userSrchFForm Flutter向けユーザー情報リスト検索条件+ソート条件+ページ番号 * @param model モデル * @return jsonデータ */ @SuppressWarnings("unchecked") @PostMapping("/members/admin/user/userA/list_do") @ResponseBody public Map<String, Object> userListDo(@RequestBody @Validated(GroupOrder.class) UserSrchFForm userSrchFForm, BindingResult result, Model model) { 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>)userListDoComm(userSrchFForm, userSrchForm, result, model, pageable, true); }
・PC・WBB向け
public class UserPcController extends UserCommController { ・・・ /** * ユーザー情報リスト一覧表示処理 * 検索ボタン押下により、ユーザー情報リスト一覧を表示する処理 * * @param userSrchForm ユーザー情報リスト検索条件 * @param result チェック結果 * @param mode モード * @param model モデル * @param pageable ページ * @return 遷移先 */ @PostMapping(params="mode=list_do") public String userListDo(@Validated(GroupOrder.class) UserSrchForm userSrchForm, BindingResult result, @RequestParam("mode") String mode, Model model, @PageableDefault( size=pageableDefaultSize ) Pageable pageable) { return (String)userListDoComm(null, userSrchForm, result, model, pageable, false); }
・Flutter及びPC・WBB向け共通
public class UserCommController { ・・・ protected Object userListDoComm(UserSrchFForm userSrchFForm, UserSrchForm userSrchForm, BindingResult result, Model model, Pageable pageable, boolean flutterFlg) { if (flutterFlg) { // Flutter向け検索条件+ソート条件+ページ番号 model.addAttribute("userSrchFForm", userSrchFForm); } else { model.addAttribute("userSrchForm", userSrchForm); } if (result.hasErrors()) { model.addAttribute("itemErrorMessages", result.toString()); return returnComm("/members/admin/user/userList", model, result, flutterFlg, "userSrchFForm"); } else { //セッションに載せる this.sessionUserSrchForm.setUserSrchForm(userSrchForm); this.sessionUserSrchOrderForm.getSrchOrderForm().setSortItemName(sortItemNames[0]); this.sessionUserSrchOrderForm.getSrchOrderForm().setSortOrder("A"); } userListSub(this.sessionUserSrchForm.getUserSrchForm(), this.sessionUserSrchOrderForm.getSrchOrderForm(), model, pageable); model.addAttribute("srchOrderForm", this.sessionUserSrchOrderForm.getSrchOrderForm()); return returnComm("/members/admin/user/userList", model, result, flutterFlg, "userSrchFForm"); }
②Flutter側のラジオボタンにデフォルトが入っていなかった。ので、Elements.elementsListメソッドを作って、入れた。
class UserList extends StatefulWidget { ・・・ Container( margin: const EdgeInsets.fromLTRB(10.0, 0, 10.0, 5), padding: const EdgeInsets.fromLTRB(10.0, 0, 10.0, 0), decoration: CommUtils.commBoxDecoration(), child:Column( children:<Widget>[Column( children: Elements.elementsList("LOGIN_TYPE", "全て").map((e) => //ラジオボタン RadioListTile( title: Text('ログイン権限 '+ e[1]), value: e[0], groupValue: _userSrchForm.roles.toString(), onChanged: (value) { setState(() { _userSrchForm.roles = e[0]; }); } ) ).toList(), ), Text( // HTTPで返却されたエラーメッセージを表示する。(エラーなしはText高=0にしている) _userSrchForm.rolesErr.join("\n"), textAlign: TextAlign.left, overflow: TextOverflow.clip, style: TextStyle(height:_userSrchForm.rolesErr==[]?0:1.2, fontSize: 12, fontWeight: FontWeight.normal, color: Colors.red), ), ], ), ),
class Elements { ・・・ //---------------------------------------- // 固定エレメント、デフォルト付 //---------------------------------------- static List<List<String>> elementsList(String key, String defaultStr) { List<List<String>> list = [["", defaultStr]]; for (var element in elements[key]!) { list.add(element); } return list; }
③Flutter側の「list_do」ページングをこれからやる。
22:51
BottomNavigationBarを使おうとしたが、惨敗。さっぱり動かない。
また明日考えよう。
■2022/06/15に、Flutter_JavaSpringプログラム自動作成◎自動生成ツールをVectorに載せました。Zenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
www.vector.co.jp
・Zenn本(Flutter_JavaSpringプログラム自動作成)
zenn.dev