SpringMVCで、セッションの管理方法とクリアに関してわからずにいます。
かなり初心者ですがよろしくお願いします。
①http://localhost:8080/sales/system/start
のURLを押すたびにセッションを初期化したいのですが、どのようにすればいいのでしょうか?
②データを確定させるまでは、Fromクラスのlistにデータを持ちまわるべきなのでしょうか?
③addボタンの押下時にRecordManager内の値が更新されています。これはなぜでしょうか?
コード上はsetをしていないのですが・・・②の質問と被りますが、最終確定の時だけ更新したいので悩んでいます。
Java
1 2@Controller 3@RequestMapping(value = "/system") 4@SessionAttributes(types = { ItemListForm.class }) 5public class SalesSystemController { 6 @Autowired 7 private MessageSource messageSource; 8 9 // 定数宣言 10 private static final String INIT = "init"; 11 private static final String ADD = "add"; 12 private static final String FIX = "fix"; 13 14 private static final String INIMSG = "従業員番号を入力してください"; 15 private static final String REFMSG = "明細に追加しました。"; 16 private static final String DELMSG = "選択された明細行を削除しました。"; 17 18 @RequestMapping(value = "/start") 19 public String init(ItemListForm form, Model model,SessionStatus sessionStatus) { 20 // ここに書いても初期化されない・・・ 21 // sessionStatus.setComplete(); 22 // 商品名リスト(プルダウン) 23 // テーブル表示用 24 form.setTempList(RecordManager.getItemList()); 25 //model.addAttribute("allList", form.getTempList()); 26 model.addAttribute("allList", RecordManager.getItemList()); 27 model.addAttribute("sNum", 1); 28 return INIT; 29 } 30 31 // 明細画面 32 @RequestMapping(params = "add") 33 public String refer(@Valid ItemListForm form, BindingResult result, Model model) { 34 35 // エラー時の動作 36 if (result.hasErrors()) { 37 model.addAttribute("allList", RecordManager.getItemList()); 38 model.addAttribute("sNum", form.getNumber()); 39 String message = messageSource.getMessage("ERRMSG_Num", null, null); 40 model.addAttribute("messageErr", message); 41 return INIT; 42 } 43 44 // 商品リスト 45 //model.addAttribute("allList", RecordManager.getItemList()); 46 model.addAttribute("allList", form.getTempList()); 47 48 // 商品IDからレコードを取得 49 Item item = RecordManager.selectItem(form.getId()); 50 51 form.setName(item.getName()); 52 model.addAttribute("message", REFMSG); 53 // 個数を足す 54 List<Item> list1 = form.getTempList(); 55 for (Item item2 : list1) { 56 if(item2.getId() == item.getId()){ 57 item2.setNumber(item2.getNumber() + form.getNumber()); 58 } 59 } 60 form.setTempList(list1); 61 62 //form.setTempList(new Item(item.getId(), item.getName(), item.getPrice(), item.getNumber())); 63 //RecordManager.updateItem(new Item(item.getId(), item.getName(), item.getPrice(), item.getNumber())); 64 //totalPriceに反映されてしまう・・・ 65 model.addAttribute("totalPrice", RecordManager.getTotalPrice()); 66 return ADD; 67 68 } 69 70 // 登録画面 71 @RequestMapping(params = "fix") 72 public String fix(Model model) { 73 return FIX; 74 } 75 76 // 確定ボタン 77 @RequestMapping(params = "decision") 78 public String decision(Model model) { 79 return INIT; 80 } 81 82 // 削除ボタン 83 @RequestMapping(params = "delete") 84 public String doUpdate(ItemListForm form, Model model) { 85 86 int cnt = form.getDelCnt(); 87 // エラー未選択時の動作 88 if(cnt == 0){ 89 String message = messageSource.getMessage("ERRMSG_Del", null, null); 90 model.addAttribute("messageErr", message); 91 model.addAttribute("allList", RecordManager.getItemList()); 92 model.addAttribute("totalPrice", RecordManager.getTotalPrice()); 93 return ADD; 94 } 95 RecordManager.deleteItem(cnt); 96 97 model.addAttribute("message", DELMSG); 98 99 if(RecordManager.getTotalPrice() == 0){ 100 model.addAttribute("allList", RecordManager.getItemList()); 101 return INIT; 102 }; 103 104 form.setDelCnt(0); 105 // 商品リスト 106 model.addAttribute("allList", RecordManager.getItemList()); 107 model.addAttribute("totalPrice", RecordManager.getTotalPrice()); 108 return ADD; 109 } 110 111} 112
Java
1public class ItemListForm { 2 3 // 変数の宣言 4 private String id; // ID 5 private String name; // 商品名 6 private int price; // 単価 7 @Min(1) 8 @Max(100) 9 private int number; // 個数 10 private int delCnt; // 削除のラジオボタン対応 11 12 private List<Item> tempList; //確定まで持ちまわる?? 13 14 public ItemListForm() { 15 16 } 17 18 /** 19 * @return id 20 */ 21 public String getId() { 22 return id; 23 } 24 25 /** 26 * @param id 27 * セットする id 28 */ 29 public void setId(String id) { 30 31中略
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。