setXXXされたくないパラメータ2

setXXXされたくないパラメータは名前付けを工夫すれば回避できる( 投げられたパラメータを setXXX されたくない場合 - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク )が、他にも方法があった。

その方法は ParameterNameAware インターフェースを実装し、

public boolean acceptableParameterName(String parameterName) {
}

メソッドで投げられたくない変数名で false を返すというもの。

例えば、"salary"はsetされたくない場合は次のような感じになる。

public class UserAction extends ActionSupport implements ParameterNameAware {
  :
  public boolean acceptableParameterName(String parameterName) {
    return !"salary".equals(parameterName);
  }
}

Actionの中でパラメータとして受け取るつもりの無いプロパティsetter に対してセキュリティのために使えそうだ。