2012-10-15 31 views
1

我有一個dataTble類型爲Action的對象,用戶可以選擇一個動作來修改它,所以我想在修改它之前檢索舊動作,所以我嘗試了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}" 如果我不能使用它,是否有另一種解決方案?

回答

2

您正在檢索此錯誤,因爲onstart屬性是應設置爲ajax請求開始之前要執行的Javascript表達式的值屬性。這裏可以使用EL表達式,但它不像actionListener那樣需要一個方法表達式。

由於在onstart的EL表達式中沒有括號,因此JSF會將此調用視爲託管屬性而不是方法。試試這個:

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

這不是你的問題,實際不過是你的方法initOldAction()不返回包含JavaScript表達式的字符串。我認爲這個屬性並不符合你的想法,它只是一個客戶端回調。

相關問題