1

我有一个 Action 类型的 dataTble cotaining 对象,用户可以选择一个动作来修改它,所以我想在修改它之前检索旧动作,所以我尝试使用 onStart 属性来执行它,但我收到了这个错误:

oct. 15, 2012 11:42:12 AM 
 com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit 
 Grave: javax.el.PropertyNotFoundException: /manageProjectTestsPage.xhtml @342,417       
 onstart="#{projectTestManagementMB.initOldAction}": Property 'initOldAction' not found 
 on type tn.talan.testFramework.managedBean.ProjectTestManagementMB

这是代码:

    public String initOldAction(){
     String index=(String)    

     FacesContext.getCurrentInstance().getExternalContext().
     getRequestParameterMap().get("index");
 System.out.println("index "+index);

  oldSelectedAction =testActionList.get(Integer.parseInt(index));
  return null;

}

xhtml:

 <p:column headerText="Options">  

     <p:commandLink id="modifyManualActionBtn" style="margin-right:5px"     onstart="# 
     {projectTestManagementMB.initOldAction}"  actionListener="#
      {projectTestManagementMB.verifyTestDisponibilityActionModifying}"  
      title="modify" update=":form:growl :form:testTabView:confirmModifyActionDialog 
      :form:testTabView:addModifyActionDlg" disabled="#
       {projectTestManagementMB.modifyBtnFlag}">
       <h:graphicImage value="../images/cssImg/modify_icon.png" heigth="13"width="17"/>
       <f:param name="index" value="#{rowIndex}" />
      </p:commandLink>
  ....

那么如何在执行actionListener之前使用onstart属性来检索旧的动作值actionListener="# {projectTestManagementMB.verifyTestDisponibilityActionModifying}" 如果我不能使用它,还有其他解决方案吗?

4

1 回答 1

2

您正在检索此错误,因为该onstart属性是一个值属性,应设置为 Javascript 表达式以在 ajax 请求开始之前执行。您可以在此处使用 EL 表达式,但它不像actionListenerwhich 需要方法表达式。

由于在 EL 表达式中没有括号onstart,JSF 假定这是对托管属性而不是方法的调用。试试这个:

onstart="#{projectTestManagementMB.initOldAction()}"

这不是您的实际问题,但是因为您的方法initOldAction()不返回包含 Javascript 表达式的字符串。我不认为这个属性做你认为它做的事情,它只是一个客户端回调。

于 2012-10-15T11:49:24.480 回答