簡體   English   中英

如何在 Struts 2 中從更新中排除 ModelDriven Action 的某些屬性

[英]How to exclude some properties of ModelDriven Action from being updated in Struts 2

我們正在使用帶有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、 sourceAcountdestinationAcount字段,它們通過modelDriven攔截器自動映射到Fundtransfer bean。 一切正常,直到聽到!

當然,用戶可以簡單地遍歷 HTML 表單並將名為sign的變量傳遞給操作,攔截器將更新它的 bean。

是否有可能我們可以配置一個模型,而不能通過ModelDriven攔截器更新符號值。

我知道我可以創建一個新 bean,然后將其復制到Fundtransfer bean 或使用某種繼承。 有沒有更好的辦法。

我們使用的真正的 bean 是巨大的,還有一些嵌套的 bean。

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

ModelDriven bean 通常用於通過 getter/setter 進行讀/寫。 您可以在此處控制訪問。 但是,如果您還不知道 Struts2 通過使用 OGNL 填充模型的params攔截器設置參數。 例如,您可以通過參數excludeParams控制此攔截器

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

另一種方法是使用ParameterNameAware ,您可以在其中實現ParameterNameAware黑/白名單。 小心這種方法可以通過第一種方法打開限制參數的大門。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM