[Seasar-user:3214] Re: 自動登録したクラスに共通の定義を適用したい

Asarima asarima
2006年 2月 17日 (金) 15:43:31 JST


Asarimaです。

 初期メソッドについては下記のようにアスペクトを定義して解決しました。

 layoutプロパティのbinding無効化についてはまだ方法が見えていないので、
何か案がありましたら教えていただけると助かります。
 (まあ、警告が出るだけなので、無視してもいいんでしょうけど…)

 よろしくお願い致します。

[java]
public class JFrameVisibleInterceptor extends AbstractInterceptor {
  public Object invoke(MethodInvocation invocation) throws Throwable {
    // setVisible(true) の直前に画面を中央に位置する
    if (Boolean.TRUE.equals(invocation.getArguments()[0])) {
      JFrame frame = (JFrame)invocation.getThis();
      SwingUtil.setLocationCenter(frame);
    }
    Object ret = invocation.proceed();
    return ret;
  }
}
[dicon]
<component name="jFrameVisibleInterceptor"
           class="enterbrain.common.seasar.JFrameVisibleInterceptor"/>
<component class="org.seasar.framework.container.autoregister.
                  AspectAutoRegister">
  <property name="interceptor">jFrameVisibleInterceptor</property>
  <property name="pointcut">"setVisible"</property>
  <initMethod name="addClassPattern">
    <arg>"frame"</arg>
    <arg>".*"</arg>
  </initMethod>
</component>

>Asarimaです。
>
> FileSystemComponentAutoRegisterで自動登録したコンポーネントのすべてに
>共通のproperty、initMethodタグを適用したいのですが、可能でしょうか?
>
> やりたいことは、JFrameを継承したクラスすべてに対しlayoutプロパティの
>自動バインディングの無効化と、初期メソッドの呼び出しを行うことです。
>
><!-- ログイン画面 -->
><component name="loginForm" class="frame.LoginFrame">
>    <!-- layoutプロパティは自動バインディング対象外 -->
>    <property name="layout" bindingType="none"/>
>    <!-- 画面を中央に位置する -->
>    <initMethod>@[E-MAIL ADDRESS DELETED](#self)</initMethod>
></component>
>
> 上記のような定義をframe.*Frameクラスに対しすべて適用したいのです。
> よろしくお願い致します。



Seasar-user メーリングリストの案内