我们正在使用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表单包含sourceAcount
和destinationAcount
个字段,它们通过Fundtransfer
拦截器自动映射到modelDriven
bean。
听到之前,一切都很正常!
当然,用户可以简单地转换HTML表单并将名为sign
的变量传递给操作,拦截器会将其更新为bean。
我们是否可以在远离配置模型,无法通过ModelDriven
拦截器更新符号值。
我知道我可以创建一个新bean,然后将其复制到Fundtransfer
bean或使用某种继承。有没有更好的方法。
我们正在使用的真正的bean很大,而且还有一些嵌套的bean。
我想可能是我可以使用某些方面的技巧,但我不知道是否可能?
答案 0 :(得分:1)
ModelDriven
bean通常用于通过getter / setter进行读/写。您可以在此处控制访问权限但是,如果您还不知道Struts2通过params
拦截器设置参数,它使用OGNL来填充模型。您可以通过参数excludeParams
控制此拦截器,例如
<interceptor-ref name="params">
<param name="excludeParams">
dojo\..*,^struts\..*,sign
</param>
</interceptor-ref>
另一种方法是使用ParameterNameAware
,您可以在其中实现黑/白参数列表。小心这种方法可以通过第一种方法打开限制参数的大门。