我整天都在尝试对我的 JSF 应用程序运行 JMeter 测试。
我知道 ViewState
,但这似乎是一个非常简单的问题。我准备了正则表达式提取器:
Reference Name: jsfViewState
Regular expression: id=\"javax.faces.ViewState\" value=\"(.+?)\"
Template $1$
Match No. 1
以下采样器是使用代理和录制创建的。
首先请求 /TourJSF/pages/protected/admin/addTourPage.xhtml
。这是将从中提取 ViewState 的 GET
请求。
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.
我找到了一些关于这个问题的博客和主题,但其中很多都没有解决。如果需要,我可以提供这些主题的链接。我真的很困惑......
问题出在哪里?也许有一些东西
jsessionid
?HTTP header 管理器
在每个HTTP 请求
中?我删除了HTTP Header Manager
但没有任何改变。- 有 JSF 应用程序吗?当我将上下文参数
com.sun.faces.enableRestoreView11Compatibility
添加到web.xml
时,没有ViewExpiredException
但返回页面的内容是不正确。
最佳答案
您是不是缺少 Cookie 管理器?
参见:
另请阅读:
关于java - 使用 JMeter 测试 JSF 应用程序 - ViewState 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734017/