Open master-of-sugar opened 8 years ago
ViewHandlerを拡張して毎回metaにぶち込む作戦?
f:viewActionでできるとおもったけど、Controllerの特定ができない。
@beforeAction("methodName")
public String actionMethod(){
ダサいよね?ねえダサいよね??
これは見かけたら考えた人の苦労も知らず笑っちゃうやつだ
@ApplyBeforeAction
public String actionMethod(){
これだったら?
なんでアノテーションつけるかというと、単なるアクセッサと区別したいから。。
("methodName") ↑これないだけで嬉しいですよね
public Constructor(){
beforeAction(this::beforeMethod);
}
@ApplyBeforeAction
public String action(){
...
}
こうするとactionメソッド実行前にbeforeMethodが実行される。アノテーションないものは無視。どう?
ふぇいふぇい!!
文字列とか超いけてないよね
文字列は最高にいけてないですね、最高に
actionListenerだとafterができないし、PhaseListenerだとクラスが特定できない。 なのでインターセプターしかないかなってことでこのやりかた。
例えば hoge.xhtmlのhogeの部分を名前ルールでHogeがコントローラーとか決まりを作ればPhaseListenerで特定できるけどそこまでするものか。。。
設計次第ですけど、.xhtmlとcontrollerが1:1かもわからんですよねw そんなのあるのかなw
そういう縛りにしたことはあるけど、コンポーネント指向をブチ殺すことになる。
もう1つの案はAngularみたいに
<f:view controller="#{hoge}" >
って指定してもらうとか
↑そんなのないから自作だけどもw
結局名前を文字列指定ですねw
faceletsの世界では仕方がない。javaの世界で文字列指定はうんこだけども。
がんばれば無いときはeclipseに怒られるようにできる気がしないでもないですね
アノテーションプロセッサ適用すればできるが何か違う解決策な気がする。。w
いい方法思いつくまで一旦保留
実行タイミングとしてはPhaseListnerでやる。 あとは実行クラスの特定方法。
Metaへの動的追加ができたらステキ。ViewHandlerをいじる?