2014-10-06 83 views
0

为什么在侦听器方法执行后调用onstart? 在侦听器方法执行之前,我应该怎样调用onstart方法? 使用jsf 2.1和primefaces 4.0。在侦听器方法执行后调用Onstart

<p:ajax event="eventMove" listener="#{myBean.onEventMove}" 
    update="mygrwlmsg" onstart="setLStorageDateToBean();" 
    oncomplete="if(args.facesMessagesAvailable){handleEditEventRequest(args.eventList);scheduleWidget.update();}" /> 

通过remoteCommand

调用bean方法
function setLStorageDateToBean() 
{ 
    if(typeof(Storage)!=='undefined') 
    { 
     if((localStorage.startDate || localStorage.getItem('startDate') != null) 
      &amp;&amp; (localStorage.endDate || localStorage.getItem('endDate') != null)) 
     { 
      var sDate = parseInt((localStorage.startDate)/1000); 
      var eDate = parseInt((localStorage.endDate)/1000); 
      var lCalRefresh = parseInt((localStorage.lastCalRefresh)/1000); 

      setLocalStorageDate([{name:'startDate',value:sDate},{name:'endDate',value:eDate},{name:'lastCalRefresh',value:lCalRefresh}]);    
     } 
    } 
} 

<p:remoteCommand name="setLocalStorageDate" actionListener="#{myBean.setDateFromLocaStorage}" > 
</p:remoteCommand> 

bean方法

public void setDateFromLocaStorage() 
{ 
    int startDate = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("startDate")); 
    int endDate = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("endDate")); 
    int lCalRefresh = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("lastCalRefresh")); 

    setlStorStartDate(startDate); 
    setlStorEndDate(endDate); 
    setlStorLastRefresh(lCalRefresh);  
} 
+0

什么在setLStorageDateToBean()方法? – 2014-10-06 05:07:51

回答

3

实测值的溶液中。 修改阿贾克斯(删除侦听)

<p:ajax event="eventMove" 
    update="mygrwlmsg" onstart="callOnAjax();" 
    oncomplete="if(args.facesMessagesAvailable)handleEditEventRequest(args.eventList); 
    scheduleWidget.update();}" /> 

创建一个新的remoteCommand组件

<p:remoteCommand name="myListener" actionListener="#{myBean.onEventMove}"> 
</p:remoteCommand> 

创建一个新的JavaScript函数

function callOnAjax(){ 
    setDateFromLocaStorage(); 
    myListener(); 
} 
相关问题