Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何排除Struts 2中更新的ModelDriven操作的某些属性_Java_Jsp_Struts2_Aspectj_Aop - Fatal编程技术网

Java 如何排除Struts 2中更新的ModelDriven操作的某些属性

Java 如何排除Struts 2中更新的ModelDriven操作的某些属性,java,jsp,struts2,aspectj,aop,Java,Jsp,Struts2,Aspectj,Aop,我们正在使用带有ModelDriven接口的操作。该操作具有,我们在会话中保存模型 模型如下: public class Fundtransfer{ private String amount; private String sourceAccount; private String destinationAccount; private String sign //setter's and getter's ommited } Fundtransferbean用作模型。JSP表单有amo

我们正在使用带有
ModelDriven
接口的操作。该操作具有,我们在会话中保存模型

模型如下:

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、
sourceAcount
destinationAcount
字段,这些字段通过
modelDriven
拦截器自动映射到
Fundtransfer
bean。 在听到之前一切都正常

当然,用户可以简单地遍历HTML表单,并将名为
sign
的变量传递给操作,拦截器将在bean中对其进行更新

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

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

我们正在使用的真正的bean是巨大的,而且其中一些具有嵌套bean


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

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

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

dojo\..*,^struts\..*,符号

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

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

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

dojo\..*,^struts\..*,符号

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

您不应该公开不应该通过setter设置的值。这通常是非常危险的。您不应该公开不应该通过setter设置的值。这通常是非常危险的。谢谢。你的意思是即使我使用ParameterNameAware,我的应用程序中也会有一扇打开的门?!谢谢你的意思是即使我使用ParameterNameAware,我的应用程序中也会有一扇打开的门?!