一尘不染

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

jsp

我们正在使用带ModelDriven接口的动作。该动作具有scopedModelDriven拦截器,我们将模型保存在会话中。型号如下:

public class Fundtransfer{

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

//setter's and getter's ommited
}

Fundtransferbean用作模型。JSP表单具有数量,sourceAcount以及通过拦截器自动destinationAcount映射到Fundtransferbean的字段modelDriven。一切正常,直到听到!

当然,用户可以简单地编写HTML表单并传递一个名为signaction 的变量 ,拦截器将为它更新Bean。

是否可以在无法通过ModelDriven拦截器更新符号值的情况下配置模型。

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

我们正在使用的真正的bean很大,并且其中一些具有嵌套bean。

我以为可能可以使用一些方面的技巧,但我不知道有可能吗?


阅读 244

收藏
2020-06-10

共1个答案

一尘不染

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

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

另一种方法是ParameterNameAware在可以实现参数黑/白列表的地方使用。请注意,此方法可能会通过第一种方法打开受限参数的大门。

2020-06-10