2013-03-19 40 views
-1

我想調用prepare()方法時,在Struts中2Struts2 - 如何在頁面加載時調用prepare()方法?

頁面加載它是我的理解是,如果我實現了我的行動Preparable接口的prepare()方法應自動觸發時加載頁面。它是否正確?還是需要其他配置?

我問,因爲這是我所做的,準備方法只是在執行方法觸發前點擊按鈕時觸發。

我希望在頁面加載之前或之後觸發prepare方法以填充操作的屬性。我怎樣才能做到這一點?

+0

1)刪除你的方法排除(你放在那裏,爲什麼)?; 2)把你的prepare()方法中的System.out.println(「Foo has bars!」)放在第一行;然後告訴我們發生了什麼事。正如你的其他問題(http://stackoverflow.com/questions/15437264/struts2-prepare-method-does-not-run-on-page-load)回答,可能你的準備* *運行,然後去由於參數未初始化而導致錯誤。確保你使用的攔截器堆棧我建議你在那裏。不要觸摸它,除非你知道你在做什麼...... – 2013-03-19 17:01:50

+0

@AndreaLigios 1)你是什麼意思刪除排除我的方法?我沒有指出任何排除情況...... 2)頁面加載時沒有打印出任何內容。當我點擊一個按鈕時,Prepare正在運行。 – stinkyPete 2013-03-20 11:29:13

+0

我在引用:「警告:參數[registerUser]在excludeParams模式列表上!」 – 2013-03-21 08:44:43

回答

2

prepare()執行Preparable動作時執行。

如果它沒有觸發,那麼你的prepare()方法可能是錯誤的動作,你最初不是通過一個動作訪問頁面(例如,打一個普通的JSP),或者有一個攔截器棧配置問題。

+0

prepare()方法在我的所有操作上......我沒有打到一個常規的jsp頁面我正在使用struts配置 registerPage.jsp。它必須是一個配置問題。但我該如何配置它? – stinkyPete 2013-03-19 16:35:07

+0

如果與此有任何關係,我會收到警告:警告:參數[registerUser]位於excludeParams模式列表中! – stinkyPete 2013-03-19 16:36:21

+0

@stinkyPete沒有進一步的信息,它是不可能的幫助。使用正常的堆棧,你不需要爲'prepare()'方法進行任何操作。 – 2013-03-19 17:09:07

1

這是我的理解是,如果我實現製備的接口上 我的行動的準備()方法會自動觸發 頁面加載時。

根據我的理解這是不正確的。 prepare方法用於準備一些數據以供execute()方法或Action類的任何其他工作方法使用,並因此在來自瀏覽器的請求的worker方法之前調用。

在頁面加載時調用prepare()方法在編程上會很麻煩,因此應該避免。嘗試設置屬性其他方式

希望這有助於:)

相關問題