s:link does not work after JBoss restart
chane Jul 26, 2006 12:42 PMOn a results screen I use the s:link tag in a table. The results screen is generated from a SFSB with ScopeType.EVENT. When the user clicks on the <s:link /> action, a new screen opens up from another SFSB with ScopeType.CONVERSATION.
This works great until JBoss is restarted. Once restarted, the view action (below) on an existing results screen returns the results.xhtml screen without any records and does not seem to call the SFSB editor.view that I expected.
Should this work? Or I'm trying to do something not allowed?
Link in results.xhtml
<h:dataTable value="#{fulfillments}" var="fulfillment"> <h:column> <f:facet name="header">Action</f:facet> <s:link value="View" action="#{editor.view}" propagation="none"> <f:param name="id" value="#{fulfillment.orderID}"/> </s:link> </h:column> </h:datatable>
Finder.java
@Name("finder") @Stateful @Scope(ScopeType.EVENT) @LoggedIn public class Finder implements IFinder { @DataModel private List<Fulfillment> fulfillments; @DataModelSelection private Fulfillment selected; private Fulfillment fulfillment = new Fulfillment(); @Begin(flushMode=FlushModeType.MANUAL) public String find(){ fulfillments = DAFulfillment.find(fulfillment); return "found"; } @Destroy @Remove public void destroy(){ } public Fulfillment getFulfillment(){ return fulfillment; } public void setFulfillment(Fulfillment fulfillment){ this.fulfillment = fulfillment; } }
Editor.java
@Name("editor") @Stateful @LoggedIn public class Editor extends AbstractEditor implements IEditor{ public Fulfillment fulfill; @RequestParameter protected Long id; @DataModel private List<Item> items; @DataModelSelection private Item item; @Create @Begin public void initialize(){ fulfill = load(Fulfillment.class, id); //does loading in a superclass items = new ArrayList<Item>(); items.addAll(fulfill.getItems()); } public String save(){ persist(fulfill); return super.save(); //super method returns "saved"; } @End public String cancel(){ em.refresh(fulfill); return "cancel"; } @End public String return(){ em.refresh(fulfill); return "return"; } @Destroy @Remove public void destroy(){ } public Fulfillment getFulfill(){ return fulfill; } public void setFulfill(Fulfillment fulfill){ this.fulfill = fulfill; } }
Thanks,
Chris....