13

我整天都在尝试对我的 JSF 应用程序运行 JMeter 测试。我知道ViewState,但这似乎是一个非常简单的问题。我准备了正则表达式提取器:

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

常规 Exp 提取器

以下采样器是使用代理和录制创建的。

第一个请求/TourJSF/pages/protected/admin/addTourPage.xhtml。这是GET将从中提取 ViewState 的请求。

第一个 GET

POST请求在/TourJSF/pages/protected/admin/addTourPage.xhtml哪里。${jsfViewStete}被传入javax.faces.ViewState

jsfViewState 已通过

第二个GET请求,现在在这种情况下非常重要。

第二次获取

结果:

首先GET。在右边我们可以看到 ViewState 的值。

第一个 GET 结果

Debug Sampler这表明 jsfViewState 值是正确的。我们可以将其与之前的屏幕进行比较。

调试采样器

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

ViewExpiredException addTourPage.xhtml 无法恢复

我发现了一些关于这个问题的博客和主题,但其中许多都没有解决。如果需要,我可以放置这些主题的链接。我真的很困惑……

问题出在哪里?也许有什么

  • jsessionid?
  • HTTP Header Manager在每个HTTP Request?我删除HTTP Header Manager了,但没有任何改变。
  • JSF应用程序的东西?当我将 context-param 添加com.sun.faces.enableRestoreView11Compatibilityweb.xml中时,没有ViewExpiredException但返回页面的内容不正确。
4

1 回答 1

10

你不是缺少一个 Cookie 管理器吗?

看:

另请阅读:

于 2012-10-04T19:30:20.657 回答