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。
'rendered =「#{issueCommentController.items.rowCount == 0}」'屬於您的視圖中的元素?爲什麼'update()'和'updateComment'之間的往返?你*知道你可以直接從命令按鈕引用'updateComment',而不是不需要的js? – kolossus 2013-03-05 05:55:47
哦對不起,我忘了編輯那一個。應該是它的呈現= 「#{issueCommentController.getCommentModel(issueController.selected.id)== 0}」。以及有關的update()和updateComment,我用另一個JS調用updateComment原因,我打算在調用它之前添加一個模式。 – blitzen12 2013-03-07 04:45:32