1

我们正在使用带有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 表单并将一个名为的变量传递 sign给操作,拦截器将更新它的 bean。

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

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

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

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

4

1 回答 1

1

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

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

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

于 2013-11-08T17:55:27.250 回答