Struts 2 ModelDriven Action如何从beaing更新中排除某些属性
我们正在使用ModelDriven
接口的动作。 该操作具有scopedModelDriven
拦截器,我们将模型保存在会话中。 模型如下:
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
的变量传递给action,拦截器会将其更新为bean。
是否有可能我们可以通过ModelDriven
拦截器无法更新符号值。
我知道我可以创建一个新bean,然后将其复制到Fundtransfer
bean或使用某种inheritance。 有没有更好的方法。
我们使用的真正的bean是巨大的,还有一些嵌套的bean。
我想可能是我可以使用一些方面的技巧,但我不知道是否可能?
ModelDriven
bean通常用于通过getter / setter进行读/写。 您可以在此处控制访问权限 但是,如果您还不知道Struts2通过使用OGNL填充模型的params
拦截器设置参数。 例如,您可以通过参数excludeParams
来控制此拦截器
dojo\..*,^struts\..*,sign
另一种方法是使用ParameterNameAware
,您可以在其中实现黑/白参数列表。 小心这种方法可以通过第一种方法打开限制参数的大门。