[jboss-user] [JBoss Seam] - Another conversation question ...
greko
do-not-reply at jboss.com
Fri Nov 2 12:24:52 EDT 2007
Hi all !
I have a screen displaying a list of devices. A device can be edited (from a button in the datatable)
When a submit a find on my deviceList screen, I start a new conversation.
When I edit a device, a create a nested conversation : once on my edit screen, I want to be able to go back to my previous search (aka the parent conversation).
The problem :
When a perform a save, on my edit screen, everything seems ok (faces message ok, entity updated). But then, when I click on my cancel/back button, to go back to my list, it is empty ... I mean, everything is still in the conversation (my search panel, even the rowCount of the list) but the list contains null elements ...
Here is part of my code :
pages.xml
| ...
| <page view-id="/parc_deviceList.xhtml" no-conversation-view-id="/parc_deviceList.xhtml">
| <description>Device Search (Results: #{deviceSearch.rowCount})</description>
| </page>
| ...
| <page view-id="/parc_deviceEdit.xhtml">
| <description>Edit Device</description>
| <param name="deviceId" value="#{deviceHome.deviceId}"/>
| <action execute="#{deviceHome.init}"/>
| <begin-conversation flush-mode="MANUAL" join="true"/>
| <navigation>
| <rule if-outcome="updated">
| <redirect view-id="/parc_deviceEdit.xhtml">
| </redirect>
| </rule>
| </navigation>
| </page>
| ...
|
parc_deviceList.xhtml
| ...
| <h:commandLink id="find" styleClass="button"
| action="#{deviceSearch.find()}"
| tabindex="6">
| <s:conversationPropagation type="join" />
| <h:outputText styleClass="buttonLabel" value="#{messages['findButton']}"/>
| </h:commandLink>
| ...
| <h:dataTable id="deviceTable" var="d"
| value="#{devicesList}"
| ...
| <h:column>
| <f:facet name="header"> </f:facet>
|
| <s:link view="/parc_deviceEdit.xhtml" propagation="nest" title="#{messages['device.edit']}">
| <h:graphicImage value="/img/bt_mini_edit.gif" style="border:0; padding:2px;" />
| <f:param name="deviceId" value="#{d.id}"/>
| </s:link>
| </h:column>
| ...
|
parc_deviceEdit.xhtml
| <h:form id="deviceEditForm">
| <div class="formFields wideLabels formBorder">
| <s:validateAll>
| ...
| </s:validateAll>
| </div>
|
| <div class="formControls wideLabels">
| <div class="entry">
| <div class="label"> </div>
| <div class="input">
| <h:commandLink id="update" styleClass="button"
| action="#{deviceHome.update}"
| tabindex="9">
| <span class="buttonLabel">#{messages['saveButton']}</span>
| </h:commandLink>
|
| <s:link id="cancel" styleClass="button" view="/parc_deviceList.xhtml"
| tabindex="9">
| <span class="buttonLabel">#{messages['cancelButton']}</span>
| </s:link>
| </div>
| </div>
| </div>
|
|
DeviceHome.java
| @Name("deviceHome")
| @Scope(ScopeType.CONVERSATION)
| public class DeviceHome extends EntityHome<RTHDevice> {
|
| @Logger
| private Log logger;
|
|
| public Long getDeviceId() {
| return (Long)getId();
| }
|
| public void setDeviceId(Long deviceId) {
| setId(deviceId);
| }
|
| public void init() {
| logger.debug("DeviceHome.init()");
|
| if (isManaged()) {
| } else {
| }
| }
|
| public String persist() {
| logger.debug("DeviceHome.persist()");
| getInstance().setActive(0);
|
| return super.persist();
| }
|
| public String update() {
| logger.debug("DeviceHome.update()");
| return super.update();
| }
| }
|
DeviceSearchAction.java
| @Stateful
| @Scope(ScopeType.CONVERSATION)
| @Name("deviceSearch")
| @Restrict("#{identity.loggedIn}")
| public class DeviceSearchAction implements DeviceSearch, Serializable {
| ...
| @DataModel
| List<RTHDevice> devicesList;
| ...
|
I can't figure out why this happens.
Could you help me a few ?
I'm currently using seam 2.0.0.CR1 on JBoss 4.2.1.GA.
Thanks for your help !
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101383#4101383
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101383
More information about the jboss-user
mailing list