システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る

ExceptionHandlerWrapperでInjectできないけど、ExceptionHandlerFactoryにはInjectできる

JSF

BeanValidationの結果をExceptionHandlerでメッセージ出力させようと思って色々やっていた足跡みたいなものです。 とりあえず、あとから振り返りが出来るようにするためのメモ。 (独自の実装クラスとか ありますが そのあたりの説明は省略します) 事象 ryo…

JSFとCDIとBeanValidationで想定外だったこと

そもそも「いや、それJSFだと亜流ですので」って終わりそうな話だと思いますが、誰かの何かに役立つかもしれないので。 環境 Payara5 Java EE7 Java8 事象 コンテナ(CDI)で生成したインスタンスのフィールドってnullなんだ。。アクセッサ経由じゃないと値…

FormのプロパティをStringに

vermeer.hatenablog.jp 以前の記事では、どちらかというと Presenter パターンに近いイメージで実装しています。*1 集合の部品となるForm その主たる関心事であるドメイン(ValueObject)を包含します。 インスタンス化およびgetterの際の型は基本的にString…

越境する基幹システム 〜SoR 2.0 アプローチ〜 に行ってきました

SoR 2.0 って何だろうというのと RDRAに興味があるというのと 増田さんの お話を聞ける というところで いくつも興味があって tagile.doorkeeper.jp に行ってきました。 基幹システムと向き合いながら、SoEを構築する 以前はスタートアップからの問い合わせ…

E2Eテストのメモ

Selenide Selenide: concise UI tests in Java Try Selenide Selenide~Javaで超簡単・簡潔にUIテストを書く~ Selenide入門 Spock APIのテストを書くならspock + RESTClientが便利かも(Groovy) JGiven JGiven で 100% Pure Java BDD(導入編) テストのあり…

Java EE(JSF)でDDDのようなことを考えてみるための土台

Formに関して色々と考えている中で、部分的に考えるのも良いけれど、一度、ベタで自分なりにJava EE(JSF)で、DDDっぽい感じの実装サンプルをつくってみて もうちょっと全体を見渡せるようなものを作ってみた方が、もう少し具体的に考察出来るのかなぁと思…

JSFのラジオボタン

JSF

ラジオボタン(SelectOneRadio)を使うことを個人的に あまり使うことがなくて 特に調べていなかったのですが、今 ちょっと やっていることで たまたま出てきて いざJSFで やろうとしたときに 色々と気になったので まとめてみることにしました。 あくまで、…

【考察】FormとEntityの類似点

Formに関して、アレコレ考えていると、Entityとの類似点が多いように思えてきた。 つらつらと思いついたことをメモ。 Identification 画面のどこの何、という意味で「ここのこのフィールド」という一意な場所が必要。 姓と名が同じ値だった場合(そんな名前…

環境変数で設定したい情報のメモ

環境変数で設定したい情報 開発とプロダクトで異なる値になるものは環境変数(もしくは それに準ずる仕組み)で設定したいところです。 まずは、何を対象にするのか整理。 JSF javax.faces.PROJECT_STAGE javax.faces.FACELETS_SKIP_COMMENTS javax.faces.FA…

JSFのIDあれこれ

JSF

JSFで生成されるidあれこれ - Challenge Java EE ! に加えて pass throughを実際に使ってみた実装サンプル 目的は JSFが生成するidとnameについて確認する事。 定義

プレゼンテーション層で例外を扱う(私の例)

ですよねw2の場合って、プレゼンテーション層ではどう処理しますか?APIのcontrollerだったら共通の例外処理で例外Response返せば良いと思いますが、HTML返す場合で一律のエラーページに飛ばさずに画面の表示をエラー文言にしたい、とかの場合はtry-catchす…

プログラムから文字列指定を無くす

メッセージをEnumにすることでタイプセーフにする仕組みを以前作りました。 vermeer.hatenablog.jp これと同じように、色々な要素から「文字列で直接指定している」というところを、ちょっとずつ無くしていきたいと思っていて そのためのネタを整理です。 で…

JSFで2重Submit対策(続)

前回やっていないこととした「入力画面まで戻ったFormの更新抑止」について対応をしてみました。 vermeer.hatenablog.jp やっていないことで2つ目に挙げた案である immediate を使うやり方です。 出来れば xhtmlに手を加えないやり方の方が良いかなぁ、と思…

JSFで2重Submit対策

一般的な2重Submitは、hiddenで保持したトークン と サーバのセッションで保持しているトークンを比較する、というやり方だと思います。 さいきょうの二重サブミット対策 - Qiita これは、これで正しいと思いますし、多くの人が知っているであろう やり方な…

Rest(WebAPI)のメモ

API 設計ガイダンス | Microsoft Docs Zalando RESTful API と イベントスキーマのガイドライン

JSFのConversationScopedをフォルダでBegin・End

vermeer.hatenablog.jp この記事で、やろうと思っていたことの お試し実装。 やりたいこと あるページから遷移したときに、遷移前と遷移後のフォルダが異なる場合、ConversationをBeginする。 フォルダから離脱するときにConversationをEndする。 Conversati…

JSFで自動Redirect

JSFをちょっと便利にする仕組み はじめに JSFで遷移先を指定するときに、return xxx.xhtml と記述します。 リダイレクトしたい場合は return xxx.xhtml?faces-redirect=true と記述します。 というか、リダイレクトしないことは皆無に近しいので、必ず記述し…

Paraya と Java EE 8 で Hello

EEなんだから、やっぱりParayaだよね。 ということで、この記事のParaya版 vermeer.hatenablog.jp Hello しかしていないから、本当にこれが正しいのか全く分からないけれど。。 ParayaはEサーバーなので、pomでの依存解決や、web.xmlなどの記述量が減ります…

Tomcat と Java EE 7(JSF2.2) で Hello

JSF

余分なものを除外した雛型みたいなもの。 画面遷移も なーんにもない、本当に「Hello」としか出力しないもの。 以前、作った時のpomと今回のpomは微妙に違ったりも。 しかも、Java EE 8 がリリースされているのに、Java EE 7(笑)*1 とにかく、これでJSFで…

BeanValidationのメッセージ遅延変換

過去記事の vermeer.hatenablog.jp vermeer.hatenablog.jp vermeer.hatenablog.jp と、ResourceBundleの扱いを追加した vermeer.hatenablog.jp を まとめ直してライブラリを作成しました。 過去記事との違い ライブラリにするにあたって、過去の記事の実装と…

複数のResourceBundleを参照できるようにする

はじめに そもそもResourceBundle#getBundleに対して複数のリソースを読み込ませたいという要求自体があまりないのかもしれません。 もしそれをしたいのであれば、ListなりにResourceBundleを保持しておいて検索すれば事足りると思います。 ですが、BeanVali…

Labelが無くても良いようにしてみた

vermeer.hatenablog.jp の続きです。 AnnotationでLabelを付与するという仕組みにしたわけですが、よくよく考えてみるとFormObjectというインターフェースをもっているのだから、そこで対象クラスを判断してPropertyに登録した表示項目名を参照するようにし…

FormへのBeanValidationにラベルをつける

はじめに 標準のBeanValidationで宣言的に実装する というのをするのは良いのですが、表示させるメッセージとしては「どの項目」というラベルが欲しいところです。 messageに項目名を付与した文言を都度指定する、というやり方もあると思いますが、テンプレ…

FormとValueObjectの関係を整理する(続)

前回はコードのイメージということで全量を公開していませんでした。 vermeer.hatenablog.jp 今回は、前回はしていない部分のコードの説明を中心にしていきたいと思います。 Form用のValidation関連 マーカーとなるアノテーションと優先度を示すアノテーショ…

JSFのメモ

JSF

リファレンス JSF 2.3 View Declaration Language: Facelets Variant 8.9 HTML5-Friendly Markup - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7) 参考リンク FaceletsはぴったりとJSFにフィットします h:messageの使い方 - urotasa…

FormとValueObjectの関係を整理する

vermeer.hatenablog.jp で書けなかったモヤモヤしたところを、自分なりにBeanValidationを中心として考えていく中で整理できつつあるので、具体的な実装に入る前に、まず まとめてみたいと思います。 それは、画面用オブジェクト(以降、Form)とドメインオ…

BeanValidationのメッセージを遅延変換させる

はじめに BeanValidationのメッセージを遅延変換する、ということの意図を簡単に説明したいと思います。 BeanValidationは検証(validate)した際にメッセージ変換も一緒に実行してくれます。 基本的に、これはありがたい機能なのですが、Domainで発行したメ…

リファクタリング後を検討してみる

vermeer.hatenablog.jp vermeer.hatenablog.jp

パッケージ構成の考察

レイヤーで論理的な役割を整理したので、次はパッケージです。 パッケージ概要 フォルダ構成例 boundedcontext ├─application │ ├─service │ │ └─hoge │ └─usecase ├─domain │ ├─model │ │ └─hoge │ └─rule ├─infrastructure │ └─datasource │ ├─entity │ └─…

レイヤーの考察

オレオレDDDを一から整理し直し。 まずは、レイヤーから。 レイヤー構成 Presentation 外部インターフェース(外部向け定義および操作)に関する機能を実装する層 「外部に対する表現」が主たる役割 Application ドメインを用いて機能を実現する層 「ユース…