最近覚えた小ネタをのせていきます。
熟練のプログラマからすると当たり前のことが多いと思いますが・・・
{}でスコープ限定
{}を書いてあげるとスコープを限定することができます。
例えば下記のような感じです。
List<Map>の記述とかに便利でしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
List<Map<String,String>> ls = new ArrayList<>(); { Map<String,String> map = new HashMap<String,String>(); map.put("key1",value1) ls.add(map); } { Map<String,String> map = new HashMap<String,String>(); map.put("key2",value2) ls.add(map); } |
リダイレクト:face-redirect=true
JavaEEネタです。
例えば登録画面のURLが http://localhost/regist.xhtml だとして、登録後の遷移の画面が http://localhost/list.xhtml の場合、JSFの仕様でregist→listと画面が移ってもURLが残ったままになることがあります。
なおかつそのページで再読み込みをすると、登録が行われてしまいます。それを防ぐために、確実にURLを遷移face-redirect=true?を書きます。
具体的には下記のように使います。
1 2 3 4 5 |
public String regist() { //ここで登録作業を行う return "list.xhtml?faces-redirect=true"; } |
リダイレクトの記述についてはここが詳しいかも
HTMLのチェックボックス
Javaとは関係ないネタでHTMLです。
HTMLのチェックボックスは今まで下記のように書いてましたが、
1 2 |
<input type="checkbox" name="id[]" value="13" /> <input type="checkbox" name="id[]" value="14" /> |
↓のように書いてもいけるんですね。ってかこっちのほうが一般的でしょうか、一番最初に↑で習ったんでこっちのほうがスタンダードになってます。
1 2 |
<input type="checkbox" name="id" value="13" /> <input type="checkbox" name="id" value="14" /> |
両方とも受け取った側ではidが配列になって取得できます。
MapをStreamで変換
よくあるList形式で、各要素の値を変換してさらにListに詰め替えすというもの。
1 2 3 4 5 6 7 8 9 10 11 |
List<Entity> ls2 = new ArrayList<>(); //lsはもともとあるList<Entity> ls.stream().map((entity) -> { //キーを値に変換(保存方法) 何らかの処理でentityを変換し、entity2にする return entity2; }).forEach((entity2) -> { ls2.add(entity2); }); |
以上、五月雨式でした。