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,我的应用程序中也会有一扇打开的门?!