没有调用p:dataTable的rowEdit事件的Bean方法 [英] Bean method on rowEdit event of p:dataTable is not invoked
问题描述
我正在尝试从< p:dataTable>
n调用bean方法编辑行,但问题是bean方法未在 rowEdit
事件。如果有人可以给我解决方案,这将是可以理解的。
I am trying edit row from <p:dataTable>
n call bean method but the problem is bean method is not invoked on rowEdit
event. It will be appreciable, if someone could give me the solution.
此外,我的bean已经在View Scope中,甚至不能在会话范围内工作...我尝试过对于所有三个范围。
Also, my bean is already in View Scope, even not working in session scope... I have tried for all three scopes.
我的代码如下:
<h:form id="commentList">
<p:dataTable id="commentTable" editable="true" paginator="true" rows="10" var="comment" value="#{commentAction.list(uID)}" class="table table-striped table-bordered table-hover commentTable" widgetVar="commentListTable">
<p:ajax event="rowEdit" listener="#{commentAction.updateCommentStatus}"/>
<p:column filterBy="#{comment.commentId}" footerText="" headerText="Comment Id" filterMatchMode="contains" sortBy="#{comment.commentId}">
<h:outputText value="#{comment.commentId}" id="commentId"/>
</p:column>
<p:column filterBy="#{comment.selectedText}" headerText="Selected Text" sortBy="#{comment.selectedText}">
<h:outputText value="#{comment.selectedText}" id="selectedText"/>
</p:column>
<p:column filterBy="#{comment.commentText}" headerText="Comment" sortBy="#{comment.commentText}">
<h:outputText value="#{comment.commentText}" id="commentText" escape="false"/>
</p:column>
<p:column filterBy="" headerText="Comment From" sortBy="">
<h:outputText value="" id="commentFrom"/>
</p:column>
<p:column filterBy="#{comment.insertedOn}" headerText="Date/Time" sortBy="#{comment.insertedOn}">
<h:outputText value="#{comment.insertedOn}" id="insertedOn"/>
</p:column>
<p:column filterBy="#{comment.commentStatus}" headerText="Comment Status" sortBy="#{comment.commentStatus}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{comment.commentStatus}" id="commSatus"/>
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{commentAciton.commentStatus}" id="commentStatus" class="commentSelectBox">
<f:selectItem itemLabel="UpdateStatus" itemDisabled="true"/>
<f:selectItem itemValue="Open" itemLabel="Open"/>
<f:selectItem itemValue="Close" itemLabel="Close"/>
<f:selectItem itemValue="Cancel" itemLabel="Cancel"/>
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
而bean方法是:
public void updateCommentStatus(RowEditEvent event) {
try {
logger.info("comment Iddddddddddd: " + commentId);
logger.info("comment Statusssssss: " + this.commentStatus);
Comment comment = (Comment) event.getObject();
logger.info("new value: " + comment.getCommentStatus());
} catch (Exception ex) {
logger.info("Exception caught in updateCommentStatus in CommentAction ..." + ex.getMessage());
ex.printStackTrace();
}
}
推荐答案
Thanx通过将getter方法中的列表检索代码替换为postConstruct注释中的init()来解决@tiny问题。
以下是更正的代码
Thanx to @tiny problem is resolved by replacing list retrieving code from getter method to init() in postConstruct annotation. Below is the corrected code
<p:dataTable id="commentTable" editable="true" paginator="true" rows="10" var="comment" value="#{commentAction.commentList}" class="table table-striped table-bordered table-hover commentTable" widgetVar="commentListTable">
<p:ajax event="rowEdit" listener="#{commentAction.updateCommentStatus}"/>
....
....
....
</p:dataTable>
@PostConstruct
public void init(){
logger.info("urs: "+ursId);
CommentManager commentManager = new CommentManager();
try {
commentList = commentManager.list(1); //hardcoding ryt now
} catch (Exception ex) {
logger.info("Exception caught in init in CommentAction ..." + ex.getMessage());
ex.printStackTrace();
}
}
public void updateCommentStatus(RowEditEvent event){
try{
CommentManager commentManager = new CommentManager();
Comment comment = (Comment)event.getObject();
logger.info("*****************************************************");
logger.info("comment Iddddddddddd: " +comment.getCommentId());
logger.info("comment Statusssssss: " +comment.getCommentStatus());
commentManager.updateCommentStatus(comment);
} catch(Exception ex){
logger.info("Exception caught in updateCommentStatus in CommentAction ..." + ex.getMessage());
ex.printStackTrace();
}
}
这篇关于没有调用p:dataTable的rowEdit事件的Bean方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!