11 Replies Latest reply on Sep 19, 2007 11:16 AM by tedgoddard

    Mixing and Matching ICEfaces/RichFaces/GWT etc

      I am starting to build an application and am reviewing several technologies. Seam is ideal for what I am doing, and I give credit to Gavin and his team. But I am very wary about picking one particular JSF component technology. It seems like the leaders like ICEfaces and RichFaces have some components that are, for my purposes, superior to the alternatives but others that are in fact inferior. Even options like Google Web Toolkit have some compelling aspects I find useful, although I have no desire to use GWT throughout my app.

      I therefore want to mix and match component technologies. I should mention that the lowest level of granularity is at the page level. In other words, I have no intention of putting ICEfaces and RichFaces stuff in the same page. I will have some pages that are all RichFaces and some pages that are all ICEfaces.

      I have two questions:

      1) Is such a thing relatively feasible? Since requests to the specific pages are funneled through different servlets, I can't see why not. Does anyone have any positive or negative experiences in this regard?

      2) Does Seam have any difficulties navigating between technologies on the view?

      Thanks.

        • 1. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
          pmuir

          From experience/reading the forum I would say that IceFaces doesn't inegrate terribly well with other component suites (but discuss this on the Icefaces forum as well), RichFaces should (e.g. we have a Seam/Trinidad/Richfaces example) - IMO this depends on how well the component suite is written. Any issues with RichFaces interacting with other frameworks should be given high priority (assuming it is fixable from the RF end). GWT is another kettle of fish (and a bit orthogonal to JSF) - check out the GWT remoting example for one way to go about using it, and Rob Jellinghaus' work (not in Seam atm) on Seam/gwt4jsf for another way. In general JSF works better than GWT with Seam, as that is where Seam is most used ;)

          1) I'm not sure about RF/IceFaces, but RF/GWT should be fine. Most frameworks have filters which can interfere with one another.

          2) Seam/JSF shouldn't have any navigation problems with different view techs.

          Post your problems back here/RF forum and they should be looked at.

          • 2. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc

            Thanks, Pete. Your comments echoed the sentiments I gleaned from both the ICEfaces and Seam forums as well. Essentially, ICEfaces doesn't appear to play terribly nice with others. That is too bad since ICEfaces has some cool components that RF seems to lack like a slick sortable, pageable dataTable (unless I missed something in the RF suite).

            As for GWT, you are right of course that it is a different kettle of fish and certainly less straightforward with Seam than a JSF component framework. I was just expanding my question beyond JSF component suites to other view technologies just to see if there were any compelling experiences anyone cared to share. I really dig their input suggest widget!

            I look forward to trying to mix RF/IF and seeing what happens.

            Thanks again.

            • 3. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
              pmuir

              RF 3.1 has a pageable datatable.

              http://livedemo.exadel.com/richfaces-demo/richfaces/dataTableScroller.jsf?c=dataTableScroller

              and sortability is under discussion IIRC.

              gwt4jsf is the best approach I know of to getting GWT widgets to work well in JSF pages.

              • 4. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc

                I actually did see that RF table component. It looks nice, but sorting by column headers is a must for my clients. Hence the look into IF.

                I noticed the Seam 2.0 documentation has a chapter devoted to GWT integration. How does that mesh with gwt4jsf?

                • 5. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
                  pmuir

                  It's orthogonal - the GWT support in Seam currently uses GWT to render the whole page and uses Seam Remoting to access Seam components and contexts whilst gwt4jsf allows you to embed GWT widgets inside JSF pages. IMO this is the more interesting approach as it allows you to mix and match widgets. It's also probably less mature (though ask on the RichFaces forum for more).

                  • 6. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc

                    The gwt4jsf certainly sounds compelling. I will definitely give it a look.

                    According to the esteemed Mr. King, "Trinidad and RichFaces can already co-exist, but we've got some ideas for making the experience of using them together even better. "

                    Trinidad already has a sortable, pageable dataTable. Combining Trinidad with RF then may solve a lot of my UI requirements while integrating well with Seam--which seems to be an issue for IF. I just need to find something online that has more than a token demo of this table in action.

                    Or of course experiment myself!

                    I have to say that I am pretty excited about seeing what transpires with all this. Thanks so much for your help.

                    • 7. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
                      damianharvey

                      Richfaces has sortable columns on the scrollableDataTable component. It's new in the latest 3.1 release. Check out the demo http://livedemo.exadel.com/richfaces-demo/richfaces/scrollableDataTable.jsf

                      Cheers,

                      Damian.

                      • 8. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc

                        Thanks, Damian. I actually missed that. The demo does indeed demonstrate sorting, but the sorting performance leaves a lot to be desired. Also, I know my clients will be demanding both sorting and paging from their tables, so the table at this stage is still insufficient for me.

                        I figure I can try to write something myself; I can wait for Gavin's team to start upgrading the RF components as part of the new ecosystem; I can try to throw IF into the mix; or I can see what Trinidad has to offer.

                        I figure I will try the last couple of choices for now.

                        Thanks again.

                        • 9. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
                          pmuir

                          Yes, I missed that too ;)

                          Take a look at the JPA backed sorting/paging in the Seamdiscs example (for Trinidad) - it may be what you are after. I still need to componentize this properly and move it into the seam distribution. I'm not aware of anything similar in any of the JSF component suites (or another impl for trinidad).

                          I need to look and see if we can provide something similar for RF.

                          • 10. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc

                            I feel pretty strongly that a slick, AJAX-enabled sortable, pageable table is a must for RF. And not just because that is precisely what I need! It is a pretty compelling demand among clients, and it has become a fairly common idiom because of the DataGrid and GridView in .Net. In fact, it might even behoove the RF team (or I suppose any JSF component team) to take a look at the .Net widgets and come up with something comparable yet better. That could go a long way towards addressing some of the criticisms lobbed at the JSF side from the .Net side.

                            • 11. Re: Mixing and Matching ICEfaces/RichFaces/GWT etc
                              tedgoddard

                               

                              "neilac333" wrote:

                              I figure I can try to write something myself; I can wait for Gavin's team to start upgrading the RF components as part of the new ecosystem; I can try to throw IF into the mix; or I can see what Trinidad has to offer.

                              I figure I will try the last couple of choices for now.


                              To maximize the interoperability of ICEfaces with other component suites, you will want the following:

                              - use just-ice.jar rather than icefaces.jar. By doing this, the standard JSF components (i.e. <h:inputText>) will not be Ajax-enabled, but potential conflicts will be reduced as well. Be sure to use <ice:inputText> on intended ICEfaces pages.

                              - set the context parameter com.icesoft.faces.delegateNonIface to "true" so that the ICEfaces ViewHandler will insert JavaScript only on ICEfaces pages (those with a .iface extension).