最近寫一個 struts2 action 傳回 json 資料,測試時發生上面的錯誤。原因是頁面的 jquery 元件透過 post method 送出 “order.qty” 的參數,struts2 的 interceptor 在收到參數後想要設定 action 內 order 物件的 qty property,事實上我不需要 struts2 作 parse 參數及設定物件的動作,參數我想在 action 內用 request.getParameter() 自己接取處理。以下的 action 設定範例可以讓 interceptor 忽略開頭為 order 的參數,由於 struts2 預設也會忽略開頭為 dojo,struts 的參數,我們也一併保留:
<action name=”updateSell” method=”jsonUpdate”
class=”com.amjet.sales.web.action.SellAction”>
<interceptor-ref name=”defaultStack”>
<param name=”params.excludeParams”>^order\..*,dojo\..*,^struts\..*</param>
</interceptor-ref>
<result type=”json”>
<param name=”target”>jquery</param>
</result>
</action>