ConfluenceのXWorkによるプラグイン作成における値チェック(Validator)の方法が少なくてガッカリした
基本的な使い方
atlassian-plugin.xml にて、インターセプターでActionに対してvalidatingStackにしておく。
<package name="jpages" extends="default" namespace="/pages"> <!-- default-interceptor-ref name="defaultStack"/ --> <default-interceptor-ref name="validatingStack"/> <action name="mycustom"class="com.example.confluence.plugin.FooAction">
すると、execute()する前にvalidate()メソッドを実行する。
このメソッドでaddFieldError()/addActionError()によりエラーが積まれた場合は、executeしないでINPUTを返す。
かなりがっかりした件
Confluenceが使っているActionフレームワークは、XWorkであってXWork2ではないし、ましてやStruts2でもない。これらのノウハウが使えたら、FooAction-validation.xmlとか、アノテーションによるValidateができるのになーとか思っていた。
実際、Confluenceの内部(例えば、一般設定値を入力するところ)では***-validation.xmlによるバリデートが行われているようである。
java/com/atlassian/confluence/admin/actions/GeneralConfigurationAction.java
に対する
etc/java/com/atlassian/confluence/admin/actions/GeneralConfigurationAction-validation.xml
とか。
ただ、これをプラグインに適用できるかというとそうではないみたいで、***-validation.xmlをどこにおいても全く反応してくれない。
アノテーションによる方法も、そもそもXWorksで導入されたようでXWorkのConfluenceには関係なかったという話。