-
1. Re: question about a4j:include and navigation rules
msteiner Jun 20, 2007 4:13 AM (in response to liuliu)I have exactly the same problem. I have to reset wizard to the first page outside included page. Any ideas ?
-
2. Re: question about a4j:include and navigation rules
msteiner Jun 20, 2007 5:02 AM (in response to liuliu)Ok I finally managed to make it works.
<a4j:form> <a4j:commandButton action="#{ModalPanel.reset}" value="reset" reRender="wizard"/> </a4j:form> <a4j:outputPanel id="wizard" ajaxRendered="true"> <a4j:include binding="#{ModalPanel.uiinclude}" viewId="#{ModalPanel.viewId}" /> </a4j:outputPanel>
My ModalPanel bean.public void reset() { //go to first page uiinclude.setViewId("/inc/first.xhtml"); }
-
3. Re: question about a4j:include and navigation rules
mohan_chaudhari Jul 9, 2007 3:19 AM (in response to liuliu)Hello,
I have the same situation. instead of command button i have <a4j:commandLink>
Can i get help on binding. sample code in bean to set binding like in example
binding="#{ModalPanel.uiinclude}"
Thanks -
4. Re: question about a4j:include and navigation rules
mohan_chaudhari Jul 9, 2007 3:33 AM (in response to liuliu)
My jsp page contains<a4j:commandLink value="change Page" action="#{test.action}" /> <a4j:outputPanel id="wizard" ajaxRendered="true"> <a4j:include viewId="#{test.page}" /> </a4j:outputPanel>
and bean contains
private String page = "First.jsp"; public String getPage() { return page; } public void setPage(String page) { this.page = page; } public void action() { setPage("Second.jsp"); }
but the jsp page is not updating with new page included. -
5. Re: question about a4j:include and navigation rules
ilya_shaikovsky Jul 9, 2007 6:24 AM (in response to liuliu)add reRender="wizard" to your link
-
6. Re: question about a4j:include and navigation rules
mohan_chaudhari Jul 9, 2007 7:21 AM (in response to liuliu)Thanks for reply,
I tried reRender also. The outpanel rerenders if it contains some other components like link, outputtext etc. but not when it contains <a4j:include>.
I don't know why ???
also, since i set ajaxRendered="true" in outputPanel I think i don't need rerender explicitely in my link. -
7. Re: question about a4j:include and navigation rules
sergeysmirnov Jul 9, 2007 11:27 AM (in response to liuliu)The commandButton must be inside the included content to make navigation workable.
Also, since Ajaxjsf 1.1.1, using a4j:outputPanel around the a4j:include is not required any more. -
8. Re: question about a4j:include and navigation rules
vdhanda Aug 16, 2007 12:40 AM (in response to liuliu)Disclaimer: This is my first real application using these technologies.
I?m using JSF (1.2), Facelets (1.1.12), Ajax4Jsf (1.1.1) and RichFaces (3.0.1).
Here?s a motivating example:
A form allows a user to enter a Purchase Order. A Purchase Order has some header information such as customer name, etc. A Purchase Order also has many Line Items. A Line Item corresponds to a specific product, quantity, price, etc., that is being purchased. While editing a Purchase Order, I want the viewer to be able to add multiple Line Items.
I use rich:modalPanel with a4j:include to create a wizard-like user experience for the user to enter a specific Line Item. The first time a user clicks on the ?link? to launch the wizard things work fine ? the user steps through the wizard, submits and the new Line Item is added to the Purchase Order form. However, when the user clicks on the link a second time, the wizard launches but displays the last ?included xhtml? that was previously displayed. I can understand this behavior. It seems that the wizard has ?memory?. My question is: how can I tell the wizard to use the .xhtml that was originally provided to it via viewId in the a4j:include? In other words, I want to tell the wizard to lose its memory and start afresh. I?ve tried several combinations of transient and keepTransient but haven?t had much luck.
All the forum posts I?ve seen talk about adding a separate button to ?reset? the wizard. I can do that. But that would make it very awkward for users ? click here to reset the wizard and then click here to launch it. Is there a nicer way to tell a modalPane/a4j:include combination that it should start afresh using the a4j:include viewId that it was originally provided? -
9. Re: question about a4j:include and navigation rules
sergeysmirnov Aug 16, 2007 1:00 AM (in response to liuliu)How you call the wizard?
-
10. Re: question about a4j:include and navigation rules
vdhanda Aug 16, 2007 3:29 PM (in response to liuliu)Hi,
I call the wizard by using <h:outputLink id="addDialogLink" value="javascript:Richfaces.showModalPanel('addDialog')">Add </h:outputLink>
An interesting observation. When I view the component tree via Facelets' debug capability, I see the first page's structure! And not the structure of the wizard page that is currently being displayed.
Thanks for helping me with this.
Regards,
Vidur -
11. Re: question about a4j:include and navigation rules
alexsmirnov Aug 16, 2007 4:45 PM (in response to liuliu)Working sample for a your use-case:
<a4j:form id="mainForm"> <a4j:keepAlive beanName="navigateBean"/> <h:outputText style="left: 570px; top: 50px; position: absolute; width:20%; font-weight: bold;" value="Main Page"/> <a4j:include id="ajaxPanel" viewId="#{navigateBean.viewId}" /> <a4j:commandButton value="Reset" action="#{navigateBean.reset}" reRender="ajaxPanel" /> </a4j:form>
Navigate bean ( request-scope ) :......... public class NavigateBean implements Serializable { private String viewId="/pages/hello.jsp"; transient private UIInclude include; public String navigateOne() { return "sucessOne"; } public String navigateTwo() { return "sucessTwo"; } public String navigateHello() { return "sucessHello"; } /** * @return the viewId */ public String getViewId() { return viewId; } /** * @param viewId the viewId to set */ public void setViewId(String viewId) { this.viewId = viewId; } public String reset(){ setViewId("/pages/hello.jsp"); if(null != include){ include.setViewId("/pages/hello.jsp"); } return null; } /** * @return the include */ public UIInclude getInclude() { return include; } /** * @param include the include to set */ public void setInclude(UIInclude include) { this.include = include; } .........
With a same backing bean, via component binding :<a4j:form id="mainForm"> <h:outputText style="left: 570px; top: 50px; position: absolute; width:20%; font-weight: bold;" value="Main Page"/> <a4j:include id="ajaxPanel" viewId="/pages/hello.jsp" binding="#{navigateBean.include}"/> <a4j:commandButton value="Reset" action="#{navigateBean.reset}" reRender="ajaxPanel" /> </a4j:form>
-
12. Re: question about a4j:include and navigation rules
vdhanda Aug 16, 2007 5:53 PM (in response to liuliu)Hi,
Thanks for your post. I appreciate your help. Perhaps, this is more of a "how to" question. And please appreciate that I'm new to these technologies so my questions might seem "basic" or "obvious".
My challenge is to display the wizard in a rich:modalPanel. And I'm using Richfaces.showModalPanel to do that. If I understand the sample code correctly, then the user would have to first reset the wizard via the commandButton and then launch the wizard via a outputLink. Is it possible to combine the two UI interactions into a single UI interaction from the user's perspective?
Thanks,
Vidur -
13. Re: question about a4j:include and navigation rules
sergeysmirnov Aug 16, 2007 6:11 PM (in response to liuliu)h:outputLink is not required to launch the modal panel. You can do it from any place the you can invoke the javascript code.
in case of using a4j:commandButton, you can "reset" the wizard with the value of reRender attribute and then popup the modalPanel from the 'oncomplete' attribute.
The activities will be performed right in desire order. -
14. Re: question about a4j:include and navigation rules
vdhanda Aug 22, 2007 12:45 AM (in response to liuliu)Thanks. That worked like a charm! Your suggestion of combining an action, reRender and oncomplete is very powerful and allows me to initialize a wizard to any state and launch it. A suggestion. Could we put this is the user guide?
Thanks for all your help.
Regards,
Vidur