nullの比較
eqaulsメソッドでnullを比較するとNullPointerExceptionが発生する
⇒nullとの比較は==(等価演算子)
addAttributeを使ったメッセージ出力
※
message→変数
エラー→例文
Controller側
Model model = new Model();
model.addAttribute("message","エラー");
html側
<p th:text= "${message}"></p>
⇒該当部分が「エラー」と表示される
モーダルウィンドウの表示
モーダルウィンドウとは:閉じるまで他の操作が行えない=メッセージや警告に使用
Bootstrapを用いた実装方法
1.headタグ内にBootstrapのCSSとJavaScriptのリンクを追加
①ローカルのファイルのパス
②オンラインのCDNのリンク
2.モーダルを開くボタンを以下のように設定する
・input type="button"
・value="(表示される文字列)"
(classでCSSの見た目を設定)
・data-bs-toggle="modal"
・data-bs-target="#(モーダルのID)"
3.divタグ内にモーダルの内容を記述
・id="(2で設定したモーダルのID)"
・tabindex="-1"
・aria-labelledby="(任意)"
・aria-hidden="true"
4.文字の大きさに合わせてh5などのタグを設定し、classなどを設定
idはaria-labelledbyで指定したものを設定しタグの間にモーダルのヘッダを記入
5.divaタグ内部にメッセージ本文を記入
6.次のdivタグの間に選択肢の数に応じてbuttonタグを設定
・type="submit"
・name="(任意)"
7.JavaのController側にて@PostMappingのアノテーションによりメソッドと結びつける
@PostMapping(value="(どのURLに対して応答するのか)",name="6で指定したもの")
8.Stringを戻り値として処理を書く
returnで遷移するリンク先を記述
繰り返しの条件で生成された、チェックが付いたチェックボックスに対する削除処理
1.formタグで以下を設定
・id="(任意)"
・method="post"
・th:action="(遷移するページのControllerとマッピング)"
・th:object="{(Beanを設定)}"
2.クリックするボタンをbuttonタグで以下のように設定
・type="(buttonもしくはsubmit)"
・onclick="(JavaScriptのスクリプト名で設定)"
3.forEachタグで生成した繰り返しの下にチェックボックスをinputタグで以下のように設定
・type="checkbox"
・name="(任意)"
・class="delete-checkbox"
・th:value="${(1のobjectで設定したBean).id}"
4.jsファイルまたはhtmlファイルのscriptタグに以下を書く
function (2で設定したスクリプト名){
const (変数①) = Array.from(document.querySelectorAll('.delete-checkbox:checked').map(checkbox=>checkbox.value));
if((変数①).length === 0){
alert("(エラーメッセージ)");
return;
}
if(confirm((変数①).length + "件の行を削除"){
const (変数②) = document.getElementById('(1で設定したID)');
変数①.forEach(id =>{
const (変数③) = document.createElent('input');
(変数③).type = 'hidden';
(変数③).name = '(3で設定したID)';
(変数③).value = id;
(変数②).appendChild((変数③));
});
}
(変数②).submit();
}
5.@PostMapping("(リンク)")のアノテーションをControllerのメソッドの上に記述
6.Controllerのメソッドの引数に以下のアノテーションを付与、List<(idの型)>で受け取る
@RequestParam(name = "(3で設定したname)",required = false)
7.戻り値はStringで、5で設定したリンクをreturnする
8.メソッド内でDBにアクセスしてdeleteする処理を記述
(具体的なSQL文はマッパーファイルおよびxmlファイルで)
チェックボックスを全てチェックする
1.対象チェックボックスをinputタグで削除
2.全てチェックする処理を実行するボタンをbuttonタグで作成
・type="button"
・onclick="(スクリプト名)"
3.htmlのscriptタグまたはjsファイルに記述
function (2で設定したスクリプト名){
let (変数①) = document.querySelectorAll('input[type="checkbox"][(その他条件)]');
(変数①).forEach(function(checkbox){
checkbox.checked = true;
});
}
※3のfunctionのforEach内のcheckedをtrueではなくfalseに変えると全てのチェックを外す処理に変えることができる。