-
1. Re: Seam 2 breaks all-on-one-page application
gavin.king Oct 15, 2007 1:53 PM (in response to damianharvey)You'll need to give us way more information than that.
-
2. Re: Seam 2 breaks all-on-one-page application
damianharvey Oct 15, 2007 2:25 PM (in response to damianharvey)Sure thing.
I have an MaintainVessels.xhtml page like this:<h:form> <!-- Vessel name --> <s:decorate id="validateName" template="/layout/edit.xhtml"> <ui:define name="label">#{messages['vessels.vesselName']}</ui:define> <h:inputText tabindex="1" styleClass="inputField" id="vesselName" value="#{vesselHome.instance.vesselName}" required="true" size="40" maxlength="150"> <a:support event="onchange" reRender="validateName"/> </h:inputText> </s:decorate> other fields.... <h:commandButton value="#{messages['saveButton']}" styleClass="button" action="#{vesselHome.persist}" rendered="#{!vesselHome.managed}"/> </h:form> <h:form> <rich:dataTable styleClass="dataTable" id="vesselTable" value="#{vesselList.allVessels}" var="vesselEntry" rows="20"> <rich:column> <f:facet name="header">#{messages['vessels.carrier']}</f:facet> <h:outputText value="#{vesselEntry.company.companyName}"/> </rich:column> more columns.... <rich:column> <s:link action="#{vesselHome.find}" title="#{messages['edit.entry']}"> <f:param name="vesselVesselId" value="#{vesselEntry.vesselId}"/> <h:graphicImage url="/img/edit.png" border="0"/> </s:link> <s:link action="#{vesselHome.remove}" onclick="return confirm('#{messages['confirm.deleteEntry']}');" title="#{messages['delete.entry']}"> <f:param name="vesselVesselId" value="#{vesselEntry.vesselId}"/> <h:graphicImage url="/img/cross.png" border="0"/> </s:link> </rich:column> </rich:dataTable> </h:form>
And my VesselHome persist method looks like this:@Override @Transactional public String persist() { //Set status to active getInstance().setStatus(VesselStatus.ACTIVE); String status = super.persist(); //Remove from Conversation context Contexts.removeFromAllContexts("vesselHome"); return status; }
The MaintainVessels.page.xml has the following rules:<?xml version="1.0" encoding="UTF-8"?> <page xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd" login-required="true"> <begin-conversation join="true"/> <restrict>#{s:hasRole('VESSEL EDITOR') or s:hasRole('VESSEL APPROVER')}</restrict> <param name="vesselVesselId" value="#{vesselHome.vesselVesselId}"/> <navigation from-action="#{vesselHome.persist}"> <redirect view-id="/secure/MaintainVessels.xhtml"/> </navigation> <navigation from-action="#{vesselHome.update}"> <redirect view-id="/secure/MaintainVessels.xhtml"/> </navigation> <navigation from-action="#{vesselHome.remove}"> <redirect view-id="/secure/MaintainVessels.xhtml"/> </navigation> <navigation from-action="#{vesselHome.reset}"> <redirect view-id="/secure/MaintainVessels.xhtml"/> </navigation> </page>
Under Seam 1.2.1.GA I could fill in the values for a new Vessel and click save. This would call the persist() method. Once that had finished the page.xml would redirect it back to the MaintainVessels page and the values in the fields would be blank as no VesselHome existed in the context.
This doesn't happen under Seam 2.0.0.CR2. When I click save, the instance is persisted and the page is redirected fine, but the values exist.
I've tried adding an <end-conversation/> to the MaintainVessel.page.xml but this will only work if I redirect to another page and not back to the same page.
Cheers,
Damian. -
3. Re: Seam 2 breaks all-on-one-page application
damianharvey Oct 15, 2007 6:12 PM (in response to damianharvey)This has turned out to be the same (or very similar) issue as in this other post of mine:
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4095424
I went back to an old 1.3.0.ALPHA version of my application and found that the culprit was one of the following jars:
jboss-el.jar
jboss-seam-gen.jar (almost definitely not this one)
jboss-seam-ioc.jar
For that version I just replaced the jars with the ones from the working version. I still can't solve this under Seam 2.0.0.CR2 but does this give an indication of where the problem may lie?
Thanks,
Damian. -
4. Re: Seam 2 breaks all-on-one-page application
damianharvey Oct 18, 2007 8:32 AM (in response to damianharvey)org.jboss.seam.framework.Home.clearInstance() was introduced in Seam 2.0.0.CR1. So I call this after I clear the contexts. Works fine.
Cheers,
Damian.