java - 如何在 Struts 2 中排除 ModelDriven Action 的某些属性更新

标签 java jsp struts2 aspectj aop

我们正在使用带有 ModelDriven 接口(interface)的操作。该操作有 scopedModelDriven interceptor我们将模型保存在 session 中。

模型如下:

public class Fundtransfer{

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

//setter's and getter's ommited
}

Fundtransfer bean 用作模型。 JSP 表单具有 amount、sourceAcountdestinationAcount 字段,这些字段通过 modelDriven 拦截器自动映射到 Fundtransfer bean。 一切正常,直到听到!

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

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

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

我们使用的真实 bean 很大,而且其中一些有嵌套的 bean。

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

最佳答案

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

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

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

关于java - 如何在 Struts 2 中排除 ModelDriven Action 的某些属性更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864743/

相关文章:

java - 在JSP中使用自定义标签访问对象

java - servlet jsp中的 session 管理

java - <s :form> to decide in the action class 中的两个按钮

java - 如何将字符串从Android发送到php

java - 具有默认命名空间的 Xpath

java - 将数据库中的日期与我从java jsp和sql中的inputtext获得的值进行比较

java - Struts2 - 使用 OGNL 设置静态列表字符串属性中的属性不起作用

java - 在 Struts 2 中重用自定义表达式 validator

java - 使用 Spring 3 上传多个文件

java - 使用 valueOf 枚举的字符串与 java.lang.IllegalArgumentException 崩溃