[Seasar-user:14751] Re: 【SAStruts】Actionのプロパティへのインジェクションする対象の範囲を指定できないでしょうか。

Satoru Okamoto [E-MAIL ADDRESS DELETED]
2008年 6月 19日 (木) 19:13:35 JST


cynipeです。

S2の管理下にあるクラス内であればBindingアノテーションを使って取得するこ
とができるので、Bindingアノテーションを使ってprivateにしておけばよいかと
思います。

> public class HogeAction {
       @Binding
      private JdbcManager jdbcManager;
       ^^^^^^
>
>     public String index(){
>        ・・・
>     }
> }

ページ上に表示するもの以外をpublicにしておくと今回のように外から叩けたり
してしまうので上記の形で対応されるのが良いかと思います。この形ならsetter
を書く必要もないですし。

以上よろしくお願いします。

IZUNO Tadashi さんは書きました:
> 伊津野といいます。
> 
> SAStrutsのActionにリクエストのパラメータ名と同じ名前のpublicなプロパティを定義しておけば、勝手に設定されますが、これを設定されないようにすることはできないでしょうか。
> HttpServletRequestやJdbcManagerなどコンテナのコンポーネントから設定されることを期待するプロパティでもリクエストのパラメータ名に同一の物があれば設定されてしまいます。
> 
> 具体的には
> public class HogeAction {
>     public JdbcManager jdbcManager;
> 
>     public String index(){
>        ・・・
>     }
> }
> 
> というActionの場合、/hoge/?jdbcManager=1みたいなリクエストを送ると、IllegalPropertyRuntimeExceptionが起きてしまいます。
> インジェクションする対象の範囲を指定することはできないでしょうか。
> チュートリアルのdownloadアクションでも再現できます。(/download/download?response=1)
> 
> s2-framework-2.4.25.jar
> sa-struts-1.0.2.jar
> 
> 以上
> --
> [E-MAIL ADDRESS DELETED]
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



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