2012-10-04 47 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进行。非常感谢!! –