2012-10-04 92 views
12

整天我嘗試運行JSF應用程序的JMeter測試。 我知道ViewState,但它似乎很簡單的問題。我準備正則表達式提取:使用JMeter測試JSF應用程序 - ViewState問題

Reference Name: jsfViewState 
Regular expression: id=\"javax.faces.ViewState\" value=\"(.+?)\" 
Template $1$ 
Match No. 1 

Regular Exp Extractor

下采樣與代理和記錄創建。

第一次請求/TourJSF/pages/protected/admin/addTourPage.xhtml。這是從中提取ViewState的GET請求。

First GET

POST請求/TourJSF/pages/protected/admin/addTourPage.xhtml其中。 ${jsfViewStete}傳遞到javax.faces.ViewState

jsfViewState passed

第二GET要求,現在在這種情況下非常重要。

Second GET

結果:

首先GET。在右側,我們可以看到ViewState的價值。

first GET result

Debug Sampler這表明jsfViewState值是正確的。我們可以將它與之前的屏幕進行比較。

Debug Sampler

javax.faces.application.ViewExpiredException: viewId:/pages/protected/admin/addTourPage.xhtml - View /pages/protected/admin/addTourPage.xhtml could not be restored. 

,我發現這個問題的一些博客和話題,但他們中許多人沒有解決。如果需要,我可以把這些主題的鏈接。我真的很困惑...

問題在哪裏?可能與

  • jsessionid
  • HTTP Header Manager以每HTTP Request?我刪除了HTTP Header Manager,但沒有任何變化。
  • JSF apllication的東西?當我添加上下文參數com.sun.faces.enableRestoreView11Compatibilityweb.xml,沒有ViewExpiredException但返回的頁面內容不正確。

回答

9
+0

我不能相信...... HTTP Cookie管理器中的線程組幫助。非常感謝你! – LancerX

+0

我已經使用HTTP Cookie管理器,但即使我一直在傳遞提取的jsf視圖狀態,我仍然遇到問題。但是,您提供的第二個鏈接幫助了我。 「一些筆記」部分提到提取的視圖狀態必須作爲「編碼」傳遞。將其設置爲編碼後,jmeter測試將通過WebSphere Portal上的JSF Portlet進行。非常感謝!! –