2011-07-11 44 views
2

將作爲後:複選框以我的形式,我在ParamsInterceptor得到OGNL錯誤:OGNL例外設置Struts2的複選框值

WARN [OgnlValueStack] Error setting expression '__checkbox_filter.findRejected' with value '[Ljava.lang.String;@dc926f' 
ognl.OgnlException: target is null for setProperty(null, "findRejected", [Ljava.lang.String;@dc926f) 

據我所知,在名稱中下劃線(額外的隱藏字段__checkbox_filter.findRejected )被Struts2正確添加了。

但是,我不明白爲什麼ParametersInterceptor試圖在我的Action(顯然不包含'__checkbox_filter'屬性)上設置由Struts2添加的屬性。

看到這個OGNL錯誤來自Struts2複選框是正常的嗎?我怎樣才能避免它?

回答

3

我只是偶然發現了同樣的問題。

您需要在攔截器堆棧中放置參數攔截器前的複選框攔截器。

這是默認的情況下,所以我想您使用自定義棧...

+0

對不起,不能再檢查這個了。但事實上這個項目使用了一個自定義的攔截器棧。 – jjmontes

+0

你救了我夥計:) – invariant

0

大多數情況下,這種情況下的錯誤是我們忘記爲屬性編寫getter和setter。因此,檢查獲得者和制定者是否在他們的位置。

+0

感謝,情況並非如此。 setter和getters在那裏用於action bean'filter'的屬性'findRejected'。該值已正確設置。儘管如此,Struts會嘗試並且無法設置上述表達式,如上面的錯誤所示。 – jjmontes

+0

除非我看到你的代碼,否則不能說。 –