2013-03-04 56 views
0

我想添加操作後刷新數據表執行阿賈克斯後刷新數據表,但它不工作。下面是 是我的代碼。無法使用PrimeFaces

該代碼使用NetBeans從數據庫JSF實體類生成。 確保下面的所有代碼都能成功執行而不會出現任何錯誤。

JavaScript代碼

function update(){ 
     updateComment(); 
    } 

view.xhtml

<h:form id="commentArea"> 
       <!--for Comment Area--> 
      rendered="#{issueCommentController.items.rowCount == 0}" style="padding-bottom: 10px;"/><br/> 
       <h:panelGroup> 
       <h:dataTable id="commentTable" value="#{issueCommentController.getCommentModel(issueController.selected.id)}" var="comment" class="table table-striped table-bordered table-condensed table-hover" rules="all"> 
        <h:column> 
        <f:facet name="header"> 
         <h:outputText value="Comment"/> 
        </f:facet> 
        <h:outputText value="#{comment.comment}"/> 
        </h:column> 
        <h:column> 
        <f:facet name="header"> 
         <h:outputText value="Comment Date"/> 
        </f:facet> 
        <h:outputText value="#{comment.commentedDate}"> 
         <f:convertDateTime pattern="MM/dd/yyyy" /> 
        </h:outputText> 
        </h:column> 
       </h:dataTable> 
       </h:panelGroup> 
       <h:inputTextarea id="reply-thread-txt" value="#{issueCommentController.selected.comment}"></h:inputTextarea> 
       <div style="clear:both"></div> 
       <div class="padding-top-10" style="width:284px !Important; margin-top: 10px;"> 
<p:remoteCommand name="updateComment" action="#{issueCommentController.retrieveComment(issueController.selected.id)}" update="commentArea"/> 
       <p:commandButton styleClass="btn btn-primary" oncomplete="update();" value="Reply" action="#{issueCommentController.create}"> 
        <f:param name="issue.id" value="#{issueController.selected.id}"/> 
        <f:param name="commented.by" value="#{sessionScope.LOGIN_USER}"/> 
       </p:commandButton> 
       </div> 
      </h:form> 

IssueCommentController.java

public DataModel getCommentModel(int id){ 
    if(commentModel == null){ 
     commentModel = getCommentPagination(id).createPageDataModel(); 
    } 
    return commentModel; 
    } 

//comment pagination. 
public PaginationHelper getCommentPagination(final int id) { 
    if (commentPagination == null) { 
     commentPagination = new PaginationHelper(10) { 
     @Override 
     public int getItemsCount() { 
      return getFacade().count(); 
     } 

     @Override 
     public DataModel createPageDataModel() { 
      return new ListDataModel(getFacade().getComment(id)); 
     } 
     }; 
    } 
    return commentPagination; 
    } 
//execuate query 
public List<IssueComment> getComment(int id){ 
    TypedQuery<IssueComment> tq = getEntityManager().createQuery("SELECT c FROM IssueComment AS c WHERE c.issueId=:id",IssueComment.class); 
    Issue issue = new Issue(id); 
    tq.setParameter("id", issue); 
    return tq.getResultList(); 
    } 
//execute after the add operation using ajax. 
public void retrieveComment(int id) { 
    items = getCommentPagination(id).createPageDataModel(); 
    } 

該加載操作後,這將被執行。

<p:remoteCommand name="updateComment" action="#{issueCommentController.retrieveComment(issueController.selected.id)}" update="commentArea"/> 

但它不刷新數據表。

anyhelp將不勝感激。 thnks。

+0

'rendered =「#{issueCommentController.items.rowCount == 0}」'屬於您的視圖中的元素?爲什麼'update()'和'updateComment'之間的往返?你*知道你可以直接從命令按鈕引用'updateComment',而不是不需要的js? – kolossus 2013-03-05 05:55:47

+0

哦對不起,我忘了編輯那一個。應該是它的呈現= 「#{issueCommentController.getCommentModel(issueController.selected.id)== 0}」。以及有關的update()和updateComment,我用另一個JS調用updateComment原因,我打算在調用它之前添加一個模式。 – blitzen12 2013-03-07 04:45:32

回答

0

我找到了解決我的問題,但我會後我的情況下,答案可能會有所幫助別人。 我用這個替換了remoteCommand代碼。

<p:remoteCommand name="updateComment" action="#{issueCommentController.retrieveComment(issueController.selected.id)}" update="commentArea"/> 

這個。

<p:remoteCommand name="updateComment" action="#{issueCommentController.getCommentModel(issueController.selected.id)}" update="commentArea"/> 
相關問題