我试图强调一个使用身份验证的相当简单的JSF Web应用程序,jMeter从不调用与按下的按钮关联的动作方法(在托管bean中).多个用户的身份验证(从CSV文件加载)完美运行(或者我认为).我将测试计划减少到最低限度,以便尝试调试这种情况.我有一个登录,一个带有commandLink的简单页面,其动作是ManagedBean中的一个方法(带有requestScope).
我的xpath提取器值是://input [@id ='javax.faces.ViewState']/@ value
我也试过一个正则表达式提取器,使用表达式id = \"javax.faces.ViewState \"value = \"(.+?)\与其中任何一个,它似乎工作正常(我曾经有一些viewState相关问题.
在他的POST请求(包含javax.faces.ViewState)上,我有$ {jsfViewState}作为值(jsfViewState是一个用户定义的变量,它保存从前一个GET方法保存的viewState).
带有commandLink的页面是(注意我故意硬编码了这个值,以便更容易地识别问题):
<h:body>
<ui:composition template="/template/template.xhtml">
<ui:define name="content">
<c:set value="Category" target="#{menu}" property="title"/>
<ui:repeat value="#{category.list}" var="cat">
<h:form id="categoryForm">
<h:commandLink id="btnOrd" action="#{product.placeOrder(1)}">COMPRAR</h:commandLink>
</h:form>
<br/>
</ui:repeat>
</ui:define>
</ui:composition>
</h:body>
Run Code Online (Sandbox Code Playgroud)
managedBean:
@Named("product")
@RequestScoped
public class ProductMBean {
@Inject
private ProductEBean productEBean;
@Inject
private UserProductEBean userProductEBean;
public List<Product> getList(){
return productEBean.findAll();
}
private void addMessage(FacesMessage message){
FacesContext.getCurrentInstance().addMessage(null, message);
}
public String placeOrder(long id){
userProductEBean.createNewOrder(id);
Product product = productEBean.findById(id);
addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Your order of …Run Code Online (Sandbox Code Playgroud)