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 に対してセキュリティのために使えそうだ。