はじめに
LOCAL学生部の総大会に参加してきたので、ざっくり書きます。総大会とは、年1回のオフラインの集いです。
LOCAL学生部とは☟
https://www.local.or.jp/clubs/students
雰囲気
2日間、ビットスターさんのラウンジを借りて行いました。総大会の内容は、主に各々がもくもくして、ブログに成果をのせる。最後にLTしたい人はするという形でした。自分は、2日目から参加したので、ほとんどなにもやってないです。
ちょっとTwitterから雰囲気拝借します。
これが総大会かぁー(・ω・)(-ω-)(・ω・)(-ω-)
LOCAL学生部総大会2019 スタート!
— LOCAL (@local_hokkaido) January 18, 2020
ビットスターさんのラウンジにて開催中
普段なかなか会えない仲間と、気軽にコミュニケーションをとりながらわいわい作業ができるのは楽しいですね。
今回の成果を、次の学生部同人誌でまとめる予定です。#local_do #localst19 pic.twitter.com/Ush2YNRElw
おゆはん!!!!美味しい!!!!
— がっちゃん@人間になりたかった (@gacchaaaaann) January 18, 2020
bitstarさんありがとうございます!!!!!!#localst19 pic.twitter.com/G2F2MTKQQV
こんな感じになります#localst19 pic.twitter.com/LZNKiIkBsC
— さんたろ (@papyrustaro) January 19, 2020
ARM向けデバイスドライバのクロスコンパイル環境つくった#localst19
— 🔥はいばら🔥 (@w_haibara) January 18, 2020
今日の進捗をTwitterに上げる
— たなか (@tanakarn98) January 18, 2020
フェミポスターを作った(は?)#localst19 pic.twitter.com/1yQ00Rx12A
進捗#localst19 pic.twitter.com/BVEtdL0EJU
— 山田@MSP (@mueru0) January 18, 2020
私のオムレツはこんな感じです。#localst19 pic.twitter.com/MGYz6E3trD
— みやもっちゃん (@saberhanako) January 19, 2020
こんな感じ~
なにやってた?
なにもしてないとはいえ、少しやったので書きます。Spring bootのFormから受とった入力値のValidationを軽くやってました。
Spring bootはJavaのフレームワークでView部分でTymeleafというテンプレートエンジンを使用しています。詳しい情報は、調べていただきたいです。申し訳ないです。解説する気力なかったのでコメント文書いてます。
Validation例☟
Controllerクラス
//画面用のFormクラスの初期化
@ModelAttribute
public ValidatedBattlePageForm setupValidatedBattlePageForm(){
return new ValidatedBattlePageForm();
}
/**言わずもがなPost
*ValidatedBattlePageFromの直後にErrorsを引数にとらないとエラーになるので注意
*引数のValidatedBattlePageFormが画面上の同名の項目にマップされる
*/
@PostMapping("BattlePage")
public String battle(@Validated(IBtPlFmOrder.class) ValidatedBattlePageForm validatedBattlePageForm, Errors errors, Model model) {
//ValidationErrorならGameStartPageに遷移させる
if(errors.hasErrors()){
return "GameStartPage";
}
Formで入力した値のクラス
public class ValidatedBattlePageForm {
/**
* @Notnullは入力値になにもないとき String型でないとエラーがブラウザにそのまま表示される
* @Min@Maxは0~4以外はだめ messageでエラーじのメッセージを設定できる
*/
//groupsでvalidationの順番を制御する
@NotNull(message = "0~4の数字を入力してください",groups = IValidatedBtPlFm1.class)
@Min(value=0, message = "0~4の数字を入力してください", groups = IValidatedBtPlFm2.class)
@Max(value = 4, message = "0~4の数字を入力してください", groups = IValidatedBtPlFm3.class)
private String playerLine;
@NotNull(message = "0~4の数字を入力してください",groups = IValidatedBtPlFm1.class)
@Min(value=0, message = "0~4の数字を入力してください",groups = IValidatedBtPlFm2.class)
@Max(value = 4, message = "0~4の数字を入力してください",groups = IValidatedBtPlFm3.class)
private String playerColumn;
public ValidatedBattlePageForm(){
this.playerLine = "";
this.playerColumn = "";
}
public String getPlayerLine(){
return playerLine;
}
public void setPlayerLine(String playerLine){
this.playerLine = playerLine;
}
public String getPlayerColumn(){
return playerColumn;
}
public void setPlayerColumn(String playerColumn){
this.playerColumn = playerColumn;
}
}
@NotNull @NotEmpty @NotBlankの挙動
@NotBlankの方が@NotNullよりいいいが、herbinateをmavenに追加する必要がある。しかし、version6からは非推奨になっている? herbinateのversionとかでうんだったので、@NutNullにしました。
追記
javax.validationを使うspring 2.0系から
インターフェース
public interface IValidatedBtPlFm1 {
}
public interface IValidatedBtPlFm2 {
}
public interface IValidatedBtPlFm3 {
}
@GroupSequence({IValidatedBtPlFm1.class, IValidatedBtPlFm2.class, IValidatedBtPlFm3.class})
public interface IBtPlFmOrder {
}
Formで入力した値のクラスで@NutNull @Min @Maxとつけている。このままではNotNullのときにも同時にMin MaxのValidationもしてしまう。そのため、Groupingする。Groupingするためには、interfaceが必要となる。@GroupSequenceをつけることで、バリデーションの順番を決めています。そして、Controllerクラスに@Validated(IBtPlFmOrder.class)を追加する。
HTML
<form action='BattlePage' method='post'>
縦(0~4)<input type='text' placeholder="0~4" name='playerLine' th:field="*{validatedBattlePageForm.playerLine}">
<span th:if="${#fields.hasErrors('validatedBattlePageForm.playerLine')}" th:errors="*{validatedBattlePageForm.playerLine}" style="color:red"></span><br />
横(0~4)<input type='text' placeholder="0~4" name='playerColumn' th:field="*{validatedBattlePageForm.playerColumn}">
<span th:if="${#fields.hasErrors('validatedBattlePageForm.playerColumn')}" th:errors="*{validatedBattlePageForm.playerColumn}" style="color:red"></span><br />
<button type='submit'>送信</button>
</form>
th:if=で指定のエラーも持っている場合のみタグを表示させ、th:errors= でそのエラー内容を表示させています。
最後に
最初の自己紹介で10代の子が多くて、うぉってなりました。 あと、半分くらいLOCAL学生部の部員がいるので塩化(エンカ)してみたいです。 というか、LOCAL学生部の千歳勢も話したことない人いたりするのでまずはそこからです。 まぁ、とりあえずたかぴろくんがいってたEDD(イベント駆動開発)で各々進捗が出せているっぽいので総大会、めでたしめでたしだったのでは?ブログも一応書いたのでえらい! 次は、OSCとかなのかな?? 本日は、ありがとうございました。終わり。
参考資料
https://programming-information.com/2018/12/25/post-198/programming-information.com