Struts 2 Model Driven Action如何从更新中排除某些属性

时间:2013-11-08 17:10:19

标签: java jsp struts2 aspectj aop

我们正在使用ModelDriven界面的操作。该操作具有scopedModelDriven拦截器,我们将模型保存在会话中。模型如下:

public class Fundtransfer{

private String amount;
private String sourceAccount;
private String destinationAccount;
private String sign

//setter's and getter's ommited
}

Fundtransfer bean用作模型。 JSP表单包含sourceAcountdestinationAcount个字段,它们通过Fundtransfer拦截器自动映射到modelDriven bean。 听到之前,一切都很正常!

当然,用户可以简单地转换HTML表单并将名为sign的变量传递给操作,拦截器会将其更新为bean。

我们是否可以在远离配置模型,无法通过ModelDriven拦截器更新符号值。

我知道我可以创建一个新bean,然后将其复制到Fundtransfer bean或使用某种继承。有没有更好的方法。

我们正在使用的真正的bean很大,而且还有一些嵌套的bean。

我想可能是我可以使用某些方面的技巧,但我不知道是否可能?

1 个答案:

答案 0 :(得分:1)

ModelDriven bean通常用于通过getter / setter进行读/写。您可以在此处控制访问权限但是,如果您还不知道Struts2通过params拦截器设置参数,它使用OGNL来填充模型。您可以通过参数excludeParams控制此拦截器,例如

<interceptor-ref name="params">
  <param name="excludeParams">
    dojo\..*,^struts\..*,sign
  </param>
</interceptor-ref>

另一种方法是使用ParameterNameAware,您可以在其中实现黑/白参数列表。小心这种方法可以通过第一种方法打开限制参数的大门。