我整天都在尝试运行我的JSF应用程序的JMeter测试。
我知道ViewState
,但它似乎是一个非常简单的问题。我准备了正则表达式提取器:
Reference Name: jsfViewState
Regular expression: id=\"javax.faces.ViewState\" value=\"(.+?)\"
Template $1$
Match No. 1
以下采样器是使用代理和录制创建的。
首先请求/TourJSF/pages/protected/admin/addTourPage.xhtml
。这是一个GET
请求,从中将提取ViewState。
POST
请求/TourJSF/pages/protected/admin/addTourPage.xhtml
,其中传递了${jsfViewStete}
到javax.faces.ViewState
第二个GET
请求,在这种情况下非常重要。
结果:
第一个GET
。在右侧,我们可以看到ViewState的值。
Debug Sampler
显示 jsfViewState 的值是正确的。我们可以将其与前一个屏幕进行比较。
javax.faces.application.ViewExpiredException: viewId:/pages/protected/admin/addTourPage.xhtml - View /pages/protected/admin/addTourPage.xhtml could not be restored.
我在stackoverflow上找到了一些关于这个问题的博客和帖子,但很多都没有解决。如果需要,我可以提供这些主题的链接。我真的很困惑...
问题出在哪里?也许与
jsessionid
有关吗?- 每个
HTTP请求
中的HTTP Header Manager
?我删除了HTTP Header Manager
但是什么也没改变。 - JSF应用程序有关?当我将
com.sun.faces.enableRestoreView11Compatibility
上下文参数添加到web.xml
中时,就没有ViewExpiredException
,但返回页面的内容不正确。