Problem on rerender of modalPanel
rdtraversi Dec 4, 2008 7:53 PMI probably lack understanding of some detail abut how these panels work and the life cycle of an entity. Could somebody help point me in the right direction?
I am having a problem when I return from a modalPanel.
I am using a commandButton on the panel to save updates.
When I return, I get an error during render saying that the id is the wrong type (String instead of Long). I am reading the managed
attribute on the EntityHome bean to determine rendering of the commandButton(s).
If I remove the rendered attribute it works fine but I have these panels in a number of places within the application and most have different buttons rendered depending on the entityHome state.
Here are some code snippets if they will help.
<div class="association" id="commentsesChildren">
<rich:dataTable value="#{esrsHome.topLevelEsrCommentses}"
var="esrComments"
rendered="#{not empty esrsHome.esrCommentses}"
rowClasses="rvgRowOne,rvgRowTwo"
id="esrCommentsesTable">
<h:column>
<f:facet name="header">Comment Thread</f:facet>
<rich:tree switchType="client">
<rich:treeNodesAdaptor id="cmt" var="cmt" nodes="#{esrComments}">
<rich:treeNode>
<b>
<a:commandLink id="rootCommentLinkA"
action="#{projectTrackingHelper.setTrackingAttributes(cmt.id,cmt.commentText)}"
oncomplete="Richfaces.showModalPanel('editCommentPanel');"
reRender="esrEditCommentsForm">
#{cmt.commentText}
</a:commandLink>
</b>
</rich:treeNode>
<rich:recursiveTreeNodesAdaptor id="rply" var="rply"
roots="#{cmt.esrCommentses}" nodes="#{rply.esrCommentses}">
<rich:treeNode>
<a:commandLink
action="#{projectTrackingHelper.setTrackingAttributes(rply.id,rply.commentText)}"
oncomplete="Richfaces.showModalPanel('editCommentPanel');"
reRender="esrEditCommentsForm">
#{rply.commentText}
</a:commandLink>
</rich:treeNode>
</rich:recursiveTreeNodesAdaptor>
</rich:treeNodesAdaptor>
</rich:tree>
</h:column>
</rich:dataTable>
</div>
<!-- Popup for editing Comments. -->
<rich:modalPanel id="editCommentPanel" minHeight="320" minWidth="530"
height="320" width="530" zindex="2000">
<f:facet name="header"> ... </f:facet>
<f:facet name="controls"> ... </f:facet>
<h:form id="esrEditCommentsForm" enctype="multipart/form-data" styleClass="edit">
<div id="editPanelStuff"> <!-- Put in to try different reRender locations -->
<s:decorate id="commentDecoration" template="layout/edit.xhtml">
<ui:define name="label">Comment Text</ui:define>
<h:inputTextarea id="commentText"
cols="80"
rows="8"
required="true"
value="#{esrCommentsHome.commentText}"/>
</s:decorate>
<br/>
<div class="actionButtons" style="text-align: left">
<h:commandButton
id="update"
value="Update"
action="#{esrCommentsHelper.updateComment}"
rendered="#{esrCommentsHome.wired}"
/>
<s:button
id="cancelModal"
value="Cancel"
onclick="#{rich:component('editCommentPanel')}.hide()" />
</div>
</div>
</h:form>
</rich:modalPanel>
Bean:
@Stateless
@Name("esrCommentsHelper")
public class EsrCommentsHelperBean implements EsrCommentsHelper {
@In
EsrCommentsHome esrCommentsHome;
public void esrCommentsHelper()
{
}
public void updateComment() {
String newText = esrCommentsHome.getCommentText();
Long id = esrCommentsHome.getEsrCommentsId();
esrCommentsHome.clearInstance();
esrCommentsHome.setId(id);
esrCommentsHome.find();
esrCommentsHome.getInstance().setCommentText(newText);
esrCommentsHome.update();
}
}