PhaseListener が2回呼ばれる件
JSFでリスナーが2回呼ばれる
・プロジェクト追加するときに作成されるweb.xmlで、「com.sun.faces.config.ConfigureListener(faces-config.xmlを使いますよというリスナ)」が定義されるのですが、これを削除すると解消しました。
検証
・PhaseListener
@Override
public void afterPhase(PhaseEvent arg0) {
System.out.println("afterPhaseが呼ばれた:" + getPhaseId().toString());
}
@Override
public void beforePhase(PhaseEvent phaseEvent) {
System.out.println("beforePhaseが呼ばれた:" + getPhaseId().toString());
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
・2回呼ばれているときのSTDOUT
beforePhaseが呼ばれた:RENDER_RESPONSE 6
beforePhaseが呼ばれた:RENDER_RESPONSE 6
[2016/08/15 15:24:10.381] Creating instance of bean 'login'
・・・
[2016/08/15 15:24:10.381] Finished creating instance of bean 'login'
afterPhaseが呼ばれた:RENDER_RESPONSE 6
afterPhaseが呼ばれた:RENDER_RESPONSE 6
・正しく呼ばれるときのSTDOUT
beforePhaseが呼ばれた:RENDER_RESPONSE 6
[2016/08/15 15:29:52.390] Creating instance of bean 'login'
・・・
[2016/08/15 15:29:52.390] Finished creating instance of bean 'login'
afterPhaseが呼ばれた:RENDER_RESPONSE 6
JSF+Bean Validation を試しました
はじめに
・入力値チェックでBeanValidationを試しました。
環境
・JSF+SPRING+MYBATIS+BeanValidation
説明
・アノテーション指定で簡単です
(bean.java)
@NotNull(message="必須")
@Size(min=1,max=10,message="文字数")
@Pattern(regexp="^[0-9]*$", message="数字")
@Email(message="メールアドレス")
private String code;
(bean.xhtml)
<h:messages id="messages" styleClass="text-left"/>
<input type="text" jsf:id="code" jsf:value="#{bean.code}" />
<input type="submit" jsf:action="#{bean.submit}" value="送信" />
(web.xml)
<context-param>
<param-name>javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
気づき
・いくつかのライブラリが必要で少しはまりました。入力値検証されない+エラーも出ない=>原因がよくわからんな・・・状態、、 ライブラリ参照で解決しました。
hibernate-validator
slf4j-api
validation-api
・h:messagesでは「情報」「警告」「異常」「致命」「詳細」が設定可能
infoClass="has-info"
warnClass="has-warn"
errorClass="has-error"
fatalClass="has-fatal"
showDetail="true"
mybatis-spring を試したところ良い感じです
はじめに
・今作成中のサービスではトランザクション管理をSPRINGで行おうと思ってます。
環境
・JSF+SPRING+MYBATIS
説明
・トランザクションをどう実装するか結構悩みました。
TOMCATプール+MYBATIS+SPRINGが良い感じそうなのでいったんまとめます。
まとめ
細かい動作は修正が必要ですが、ざっくりと構築できました。
・OK:メソッドへアノテーション付与する形でトランザクションを管理
・OK:Mabatis-Generatorから出力されたファイルは変更しない
・OK:拡張MAPPER、DAO、DTOなど作らないで最小限の実装を目標とする。
・NG:コンテナ起動時、AOPExceptionが発生する。