My JSF Experience
Of all the MVC Frameworks I've developed with in the last few weeks (Struts, Spring MVC, WebWork and Tapestry) - JSF was by far the worst. And it's not the implementations that are the problem, it's the spec itself (as far as I can tell). Plain and simple, it does not simplify web development.
I spent 3 days developing a simple JSF app - most of it which I had done in the first day. The last 2 days have been spent migrating to MyFaces and trying to find clean ways to do things. My perspective on JSF after this experience? Run away. Run far, far away. All of the above mentioned frameworks are MUCH superior to this technology. Let's get on with the things I learned.
- MyFaces handles duplicate posts nicely. If you hit "reload" on your browser after saving a record, you get presented with an empty form rather than a duplicate record. I believe I got a duplicate record with Sun's RI.
- The ability to specify an "action" attribute on a button (or a link) and them map that action to a page (in faces-config.xml) is pretty cool.
- Every button or link clicked results in a form post. That's just wrong - why can't I have true links like the web is supposed to? So much for bookmarks.
- Saving state on the client results in enormously long URLs and/or hidden fields.
- JSF support is fairly non-existent. Unlike the other MVC frameworks, the MyFaces mailing list has hardly any traffic and the Sun forums aren't much better.
- The MyFaces website seems to be down whenever I want to look something up on it, like right now.
- I did find some CRUD examples, like this this one, but was disappointed to find that i18n is not considered for setting success messages. I ended up using the solution described in this post. 6 lines of code to set a success message - you've got to be kidding me! Most frameworks have a simple 1-2 liner.
- Waiting for JSPs to compile the first time has surprisingly become painful after using Tapestry, Velocity and FreeMarker for the last 2 weeks.
- Integration with Spring is fairly easy (code is in CVS), but MyFaces spits out an error when it shouldn't be.
- Validation messages are ugly. For instance, when a required field isn't filled in, I get: "lastName": Value is required. I was able to override the default messages, but I was never able to use the label of the field (vs. the field's id).
- The <h:messages> tag is practically worthless. Sure it's great for displaying messages (error and success), but that's about it. It has a "layout" attribute that doesn't even work in Sun's RI, and in MyFaces it just wraps a <span> with a <ul><li> or a <table>. Both of these layouts are useless b/c you can't set a css class on them. I ended up using "table" and having to set a generic CSS rule (width: 100%) in order to get the message/error bar to show across the top of my page. This tag also doesn't allow you to escape HTML.
- The <h:dataTable> component is nothing like the displaytag. MyFaces claims to have a pageable/sortable component, but it requires custom logic/methods in your managed-bean. Yuck. I ended up using <h:dataTable>, which has neither sorting or paging. This is only because I couldn't get an <h:commandLink> working inside a displaytag column.
- JSF-created apps are pretty much untestable. Managed-beans are testable, but the UI seems really difficult with jWebUnit and Canoo's WebTest. IMO, it should be possible to specify a URL to edit a record (i.e. editUser.html?id=2). With JSF and my master/detail app, the link to edit actually sets about 5 hidden form fields with JavaScript and then submits the form. I could probably figure the URL out, but it'd be ugly. Also, the MyFaces <h:dataTable> will not render an "id" attribute if you specify one. This is needed to verify tables and their data with jWebUnit.
- When using "ant reload" to reload my application (using Tomcat's Ant Tasks), I kept encountering a ThreadDeath error. This seems to be specific to MyFaces as I never saw it with other frameworks or Sun's RI.
Like Tapestry, I felt like I was banging my head against the wall a fair amount. However, with Tapestry (and all the other frameworks), I was able to get exactly the behavior I wanted w/o too much work. I could produce clean and user-friendly error messages - (Tapestry already had clean required messages built in). I was able to write a jUnitWebTest to test all CRUD activities. With JSF, I was able to test one thing - adding a new record. I couldn't edit it b/c the JavaScript support (which I tend to not use) puked every time it encountered a JSF-generated JavaScript function.
My opinion after all of this? If you know Struts, Spring MVC and WebWork are fairly easy to learn. WebWork is simpler and elegant, but Spring MVC supports more view options out-of-the-box. Tapestry is cool, but you'll have to invest a lot of time into learning it and you'll probably get caught up in its cult and forever be claiming "Tapestry Rocks!" which can get annoying to your fellow developers. Finally, I can confirm that SiteMesh rocks - it worked for all the frameworks I used and I never had to change a single line of code.
Whatever you do, don't use JSF. Not yet anyway.
Posted by Eric Ma on August 07, 2004 at 01:49 AM MDT #
Posted by 66.167.118.157 on August 07, 2004 at 01:53 AM MDT #
Posted by Cam on August 07, 2004 at 03:38 AM MDT #
Posted by 66.167.118.157 on August 07, 2004 at 03:41 AM MDT #
Posted by gerryg on August 07, 2004 at 04:00 AM MDT #
Posted by 66.142.96.71 on August 07, 2004 at 04:02 AM MDT #
I agree that I asked a lot of questions on mailing lists and didn't invest much time to learn JSF. <em>However</em>, I did the same thing with WebWork and Tapestry. Not only were my questions answered, but I was able to accomplish my desired tasks in a reasonable amount of time. It's almost like an experiment in newbism. I'd argue that JSF is similar to Tapestry and Tapestry seems to be a much more capable framework.
Posted by Matt Raible on August 07, 2004 at 04:06 AM MDT #
Posted by Francisco Hernandez on August 07, 2004 at 04:43 AM MDT #
Matt,
I've been using struts for awhile and thought I would start to look at JSF in the near future as I heard that JSF would replace struts eventually. My problem is struts (with tiles) has basically met all my needs until now rather nicely. Your comment:
"If you know Struts, Spring MVC and WebWork are fairly easy to learn."
makes me wonder if I am missing out on something from these other frameworks. Do they all do the same thing, or is there different advantages to each framework? Basically, why should I migrate from struts?
BTW, thanks for maintaining such an interesting blog!
-Pat
Posted by Pat on August 07, 2004 at 05:29 PM MDT #
My opinion is that if Struts works for you, there's not much reason to use another framework. My personal reasons for learning Spring MVC and WebWork was to see if I was missing out on anything. What I found was that their main advantange is you can use your model objects (POJOs) to back your forms. No need for ActionForms. However, using XDoclet, you can generate your ActionForms from POJOs - so it's only a minor build-time advantage.
I also like how Spring MVC and WebWork aren't as tied to the web environment. However, it's not <em>that</em> big of a deal. The WebWork guys claim that the no-tie-to-the-web is an awesome feature, but it's not <em>that</em> cool - just kinda neat. You could argue that Spring Controllers and WebWork actions can be easily tested outside a container, but so can Struts Actions (using MockStrutsTestCase).
As far as tag libraries, Struts' tags remain the best of the bunch. WebWork's tags are cool b/c you have to type a lot less, but sometimes they do too much and the whole single quote/double quote thing is annoying. The nice thing is you can customize the HTML produced very easily. Spring is nice because their tags don't emit any HTML, but it does result in a lot more LOC in your JSPs. Although, I do have to admit that complete control over all the XHTML produced is nice. I really like how you can easily use Velocity with Spring, but you can use it with WebWork and Struts too.
If I was to start a new project tomorrow, I don't know what I'd choose. It'd depend on the deadline. I pretty much know how to do everything with Struts, so I'd probably never bang my head agains the wall - which would be nice. If members of the team wanted to use another framework, I'd be open to that too. My main goal with all of this is to integrate them into AppFuse and make it easier to get started with each one of them.
Posted by Matt Raible on August 07, 2004 at 06:12 PM MDT #
Thanks for the insight Matt! The fact that you can use your POJOs instead of ActionForms does sound nice. That's pretty much the only headache I had with Struts although I've developed my own way of easily converting between the 2 now fairly nicely. I think I'll stay with Struts for the time being and watch for more feedback from the early users of JSF and the other frameworks to see what's going on.
-Pat
Posted by Pat on August 08, 2004 at 04:36 PM MDT #
Posted by Cam on August 09, 2004 at 01:22 AM MDT #
Posted by Mauro on August 09, 2004 at 06:09 PM MDT #
Posted by Gwyn Evans on August 09, 2004 at 06:09 PM MDT #
Posted by 68.94.21.199 on August 09, 2004 at 11:56 PM MDT #
Posted by Armin on August 10, 2004 at 02:20 PM MDT #
Posted by Kito D. Mann on August 10, 2004 at 04:20 PM MDT #
You and David have said the same thing: I've stated I have a problem with the specs, but there's not much proof in my post. I'll agree with you. The few minor issues I have (no easy way to i18n success messages, no HTML escaping on <h:messages> and ugly validation messages) do seem to be spec related as the deficiencies exists in both Sun's RI and MyFaces.
I think JSF is a good idea, and seems easy to work with at first, but from a hand-coding perspective, there's some silly stuff - like having to load a resource bundle after the <f:view> tag. Why can't <f:view> be in a SiteMesh decorator? Why can't the resource bundle be declared for all pages, rather than needing to be declared on each page you want to use it? These are spec issues IMO.
I was also pretty disappointed in the <h:dataTable> component. I heard a lot of hype about it and how it was just as good as the displaytag - but it doesn't even come close to the functionality that the displaytag has. This is fine since I can use the display tag in JSF - but I can't invoke an action's method with the display tag and an outputLink. That sucks. I have a few simple things I like in my applications and JSF couldn't provide all of them easily: <ul class="glassList">
I hope these issues are fixed soon b/c I do think JSF has potential. It simply doesn't meet my meager requirements to write a basic webapp.
Posted by Matt Raible on August 10, 2004 at 04:59 PM MDT #
Hi,
Disclaimer - I'm a JSF newbie.
I'd like to add to the discussion another JSF shortcoming I hope would be addresses in future specification:
<strong>Iterating Layout -</strong> JSF can iterate a layout using either <h:dataTable ...> or <h:panelGrid ...>, both rendering as tables. This is VERY restrictive (can't even use a simple list). Solutions I've found suggest either a Tapestry-like solution or mixing JSF with JSTL. Using JSTL in conjuncture with JSF is very straightforward but is also restricted - no JSF tags are allowed (well, recommended actually, from what I understand the result is unpredictable) within JSTL tags. So this means using where necessary JSTL only, which is a shame. The Tapestry-like solution is interesting but nowhere near Tapestry's capabilities (not that that there was such an intention). More (and much more) on this issue.
Pretty much the same goes for <strong>conditional rendering</strong> - tweaking the "render" attribute (the JSF way as I understand it) doesn't provide as much control as a simple JSTL <c:if></c:if> or:
<font color="#7f0055" size="2"><c:choose></font>
<font color="#7f0055" size="2"> <c:when</font><font size="2"> test=</font><font color="#0000ff" size="2">"${userHandler.currentUser != null}"</font><font color="#7f0055" size="2">></font><font size="2">
</font><font color="#7f0055" size="2"> <c:out</font><font size="2"> value=</font><font color="#0000ff" size="2">"${message.hello}"</font><font size="2"> </font><font color="#7f0055" size="2">/></font><font color="#7f0055" size="2"><c:out</font><font size="2"> value=</font><font color="#0000ff" size="2">"${userHandler.currentUser.displayName}"</font><font size="2"> </font><font color="#7f0055" size="2">/></font>
<font color="#7f0055" size="2"> </c:when></font>
<font color="#7f0055" size="2"> <c:otherwise></font><font color="#7f0055" size="2"><c:out</font><font size="2"> value=</font><font color="#0000ff" size="2">"${message.site_header_welcome_visitor}"</font><font size="2"> </font><font color="#7f0055" size="2">/></font><font color="#7f0055" size="2"></c:otherwise></font><font size="2">
<font color="#7f0055" size="2"></c:choose></font></font>
Posted by Ophir Radnitz on August 11, 2004 at 12:08 PM MDT #
Posted by Fernando Petrola on August 11, 2004 at 03:20 PM MDT #
Posted by youngm on August 11, 2004 at 03:30 PM MDT #
On the other hand, I think the messages tag is a great idea. Sun's renderer is what's broken. But it was very easy for me to write and deploy a better renderer. Now if only the messages would survive a redirect....
Posted by Ray Davis on August 11, 2004 at 03:31 PM MDT #
Posted by youngm on August 11, 2004 at 03:32 PM MDT #
Posted by Eric Hauser on August 11, 2004 at 03:34 PM MDT #
Posted by Aris on August 11, 2004 at 04:18 PM MDT #
Mike - I did use the spring-jsf integration project, and found it worked great. The major reason I switched to MyFaces is b/c they said they had a sortable/pageable table - but it's not as full-featured as I'd like. I also switched to using Spring's native VariableResolver, which works - but MyFaces logs errors. I should probably change back to using spring-jsf as it seems to be more robust. Your idea about injecting messages with Spring is a good one - thanks!
Posted by Matt Raible on August 11, 2004 at 04:24 PM MDT #
Posted by Chad Smith on August 11, 2004 at 06:07 PM MDT #
Posted by Andre Mermega on August 11, 2004 at 07:35 PM MDT #
Posted by Steve on August 11, 2004 at 07:45 PM MDT #
Posted by Dmitry Namiot on August 11, 2004 at 08:45 PM MDT #
Posted by Stephen Pasco on August 12, 2004 at 11:34 PM MDT #
Posted by toto on August 13, 2004 at 08:04 AM MDT #
- I have tried and tried to find simple descriptions of the expression language, but all I find are BNF notations. I am sure that with Tomcat 5, the expression language comes in (we are on 4.1, so the expression language is restricted to unary operators on method results).
-The JSF syntax is easy, but the components are buggy. Nested tables DO NOT work, even with the latest version. (ActionEvent from within a nested table comes in with data related to only the last nested group, not the one it was clicked on). Eevn though the ids are correct in the generated html, I cannot find that id the ActionEvent, so my workaround efforts are blocked.
- I just need to turn on/turn off components, but I cannot figure this out. I have not figured out how to nest components within a non-visible container.
- I like the ease of putting listeners, etc. on the jsf tags. I am not sure how to inflate the model from the database... I would like to do this from one spot. Is there something called during in invokeApplication?
- The jsf jars clutter up the log files with SAXParseExceptions because their built-in xml files do not specify <DOCENGINE dtds lines.
----------- On to SOFIA... - I have used SOFIA for over 2 years now, and with some work, it has done everything I have asked it to. The bookmarking is not straight-forward, but we did it. Nested tables require the code to manage session variables, but we did it.
- SOFIA is session-based only, so users get funky error messages occasionally.
- SOFIA is fast and once all the kinks are worked out, it is quite fast to develop in.
- We use POJOs to manage transactions using their BeanModel. This is good. We bypass the automated SOFIA datastore retrival/update logic in favor of POJOs. The good thing is we can do this easily.
- Overall, SOFIA is hard to learn, and only one other person in our area has bothered. The difficulty lies in the things you have to turn off in their event handling model. Once you do that, and captured the results in a template controller, things go smoothly.
- The Dreamweaver integration is OK, but it is buggy. We used it for two weeks and kept losing code because the SOFIA Dreamweaver Javascript modules kept bungling things. Hand-coding the SOFIA framwork is fine. I still occasionally Dreamweaver for layout.
- SOFIA has quirks in its event model. You must program in code to turn off certain calls.
- The html components are missing quite a few javascript attributes (each attribute in an html tag has to have a matching SOFIA Java method).
- I like the control that the SOFIA containers provide. I can toggle entire groups of components with a single line of controller code based on user permissions. On the jsp-side, all I have to do is to group these components within that container. There is no equivalent within JSF.
Posted by James Violette on August 16, 2004 at 03:20 AM MDT #
Posted by joneric on August 16, 2004 at 07:08 PM MDT #
So many people have said so much (that I haven't had time to read). I'm probably not going to say anything new, but here's my reply anyway :-).
> You and David have said the same thing: I've stated I have a problem with the > specs, but there's not much proof in my post. I'll agree with you. The few minor > issues I have (no easy way to i18n success messages, no HTML escaping on > <h:messages> and ugly validation messages) do seem to be spec related as the > deficiencies exists in both Sun's RI and MyFaces.
Fair enough. I'm not too worried about component deficiencies, though, because vendors will quickly fill in those gaps (and already have to some extend). The standard components are definitely minimialistic.
> I think JSF is a good idea, and seems easy to work with at first, but from a > hand-coding perspective, there's some silly stuff - like having to load a resource > bundle after the <f:view> tag.
I agree with you the specifying <f:loadBundle> is a pain, but you can't say that other frameworks don't have strange requirements like this one. It's not _that_ big of a deal.
> Why can't <f:view> be in a SiteMesh decorator?
I can't say much about this, because I haven't tried using the two together. I'm assuming that you tried to use the <f:subview> tag, correct?
> I have a few simple things I like in my > applications and JSF couldn't provide all of them easily: > * A sortable/pageable list of data. It's possible, but you have to add special > sorting logic for each class. JSP already has this with the display tag - I'd simply > like to be able to use it in JSF.
I do think that the data grid component could be improved. Again, this leaves the door wide open for vendors, and there are already better grids.
> * Bookmarkability. Container managed authentication gives us a great way to > offer users the ability to bookmark pages. If everything is a POST with JSF, we > lose this ability. Sure there's the HTMLOutputLink, but if we can't invoke actions, > what good is it?
Fair enough.
> * Clean and easy to read validation messages. The validation messages in both > MyFaces and Sun's RI are not something you'd deliver to customers. What's wrong > with making clean messages out-of-the-box? Tapestry seems to have no problems doing > this. All the other MVC frameworks make you specify your own - which is fine with me.
I don't see how having poor error messages is _worse_ than having no error messages at all. At least you have starting point. And they're easy to change.
* Easy cancelling and multi-button form handling. JSF does this well - better than the rest I'd say.
True.
> * Easy testability. Because of the plethora of JavaScript, JSF apps are difficult > to test with tools like jWebUnit and Canoo's WebTest. Don't get me wrong, I love > JavaScript - but an application should be able to be tested w/o it.
I'm not sure this is really a JSF problem, because a lot of real applications use JavaScript. Shouldn't a testing tool be able to deal with that reality? And, as Geary pointed out, testing application logic in backing beans is certainly doable using JUnit.
> Success Messages. JSF does success messages OK - it's a pity it's not easier to get > a resource bundle and it's a shame that you can't escape HTML in the <h:messages> > tag. This seems like an oversight to me.
True. But I don't think it's a major issue, and I think other frameworks have similar issues that look like oversights.
I really think most of your complaints are minor. The only one that seems like a major issue is bookmarkability. If JSF's standard data grid was as powerful as displaytag, I think you would have been much less frustrated. For better or worse, the EG put a lot more emphasis on designing the framework than on making the standard components exceedingly powerful. The result is a really powerful framework and a pretty basic set of standard components.
Posted by Kito D. Mann on August 20, 2004 at 09:12 PM MDT #
Posted by Neil Laurance on September 01, 2004 at 01:16 PM MDT #
Posted by Neil Laurance on September 01, 2004 at 01:19 PM MDT #
In an effort to enhance the reusability of a UIGridPager and 2 associated renderers that I wrote, I decided to read the JSF specification. As I tried to make notes about things I can do to revise my implementation, I kept coming back to a single nagging problem: JSF's STATE_SAVING_METHOD. Because the JSF specification allows this to be configured at deployment, it effectively eliminates the ability to send request parameters via the GET method.
Matt, this goes back to your bookmarking and test case gripes. My major gripe is that I don't want to count on javascript support from my http/html clients. If I could count on javascript support from all of my clients, I'd have much less use for server-side validation (since I could do most of my form validation right on the client using javascript). In order to render an html hyperlink for my pager, I have to create a hidden form field whose value is dynamically changed by an onclick event before submitting the form. The onclick event attribute is useless if your client doesn't support javascript.
Perhaps this is why JSF is targetted mainly toward 'intranet' applications, since at least there you can guarantee javascript support. But then what's the use of having a different renderkit for WML? Do you really want to spend the effort so that your intranet can be accessed from cell phones and PDA's? I think the JSF framework would be much more reusable if form submits (i.e. 'JSF requests') could be initiated using a GET query string. However this would only be possible if your client's state was saved on the server, or if the state could be saved on the client using a much shorter string (like a JSESSIONID).
The main lesson I've gleaned from my JSF experience is the ability to recognize that the spec is only in it's 1.x version. Does anyone remember the EJB 1.x specifications? CMP was screwy, all beans were remote, and everything was synchronous. EJB 2.x has fixed a lot of that stuff only after vendors and developers griped about it. It's not time to adopt JSF in your applications just yet, unless the standard implementations satisfy your needs. It will be interesting to see how JSF evolves though, so don't forget about it entirely.
Posted by Sophomore on September 16, 2004 at 02:17 AM MDT #
Oracle's JSF component library is called ADF Faces and you can download and play with our ADF Faces Early Access Release (EA7) in whatever environment you use for your JSF development.
If you're using JDeveloper 10g, this article explains how to use ADF Faces with it. Steps would likely be similar with other IDE's that support tag libraries and JSP-based development.
Lastly, we've previewed at JavaOne 2004 and various conferences the visual JSF features coming in the next major release of JDeveloper 10g, due out in 2005.
Posted by Steve Muench on September 22, 2004 at 04:28 PM MDT #
Speaking as one who has never used JSF, my comments maybe wrong. However, this diffently seems like it's for the worse. We have this all powerful framework and we can't do anything useful until vendors can produce components or we roll our own. Then we have a myriad of components all doing the same thing but slightly differently. Different API's to use them, vendor lock-in, etc. Doesn't sound like the best way to go about things. But that is Sun, give the vendors all the power and stick the developers with the problems.
Posted by Jason on September 24, 2004 at 01:56 PM MDT #
Posted by Thomas Plümpe on October 14, 2004 at 12:43 PM MDT #
Posted by eusdart on October 15, 2004 at 01:31 PM MDT #
Posted by 69.193.88.30 on November 08, 2004 at 03:27 AM MST #
Posted by 69.193.101.102 on November 12, 2004 at 12:54 AM MST #
Posted by gondy bullsais on December 13, 2004 at 06:50 AM MST #
Posted by net on January 16, 2005 at 05:05 AM MST #
Posted by 83.89.176.250 on May 03, 2005 at 09:20 AM MDT #
Posted by Cristiano S. Neves on July 10, 2005 at 09:16 PM MDT #
Posted by reena on August 23, 2005 at 07:08 AM MDT #
Posted by 195.13.39.137 on September 06, 2005 at 04:23 PM MDT #
Posted by Malcolm Edgar on January 20, 2006 at 03:14 AM MST #
Posted by 196.12.44.162 on March 31, 2006 at 12:35 PM MST #
Posted by jack yan on April 30, 2006 at 09:46 AM MDT #
Posted by Robin on June 22, 2006 at 09:41 AM MDT #
Posted by John Doe on November 08, 2006 at 03:07 PM MST #
Posted by Sudhir Nimavat on January 15, 2007 at 10:51 AM MST #
Posted by jon on May 07, 2007 at 08:49 PM MDT #
Posted by jon on May 07, 2007 at 08:52 PM MDT #
Posted by james on May 09, 2007 at 06:41 PM MDT #
Posted by Bob on May 15, 2007 at 02:56 AM MDT #
Posted by Marcus on May 15, 2007 at 06:42 AM MDT #
Our project has sunk a lot of money into JSF development, and we have almost nothing to show for it. We have talented developers, but JSF just makes you do a lot of work to avoid doing work.
Once you decide to do something that JSF wasn't *explicitly* designed to handle, you have a lot of coding ahead of you. And as Matt said, even after that you may not be able to get the results that you want.
Posted by Etienne on August 16, 2007 at 09:57 PM MDT #
Posted by 209.6.185.137 on August 24, 2007 at 10:03 PM MDT #
Posted by 209.6.185.137 on August 24, 2007 at 10:04 PM MDT #
Posted by Shawn on August 24, 2007 at 10:05 PM MDT #
Posted by Shawn on August 24, 2007 at 10:05 PM MDT #
Posted by JSF Convert on January 10, 2008 at 06:45 AM MST #
I'm going nuts with JSF. It's almost refreshing to read this. The sad thing is it was written 3 years ago yet a lot of the problems still remain. I think in theory JSF is a good idea. The whole component model, and being able to map a link or button directly to a method. But when I look at the amount of Javascript produced, and the fact that everything is a form submit. I mean I have a button that does only javascript actions and still submits the form unless if I throw a "return false" into the onclick attribute. I consider a hack to the framework since the expected behavior is to submit the form. I find it impossible to keep the page light (in terms of bandwidth consumption). Good thing the project I'm working on is for intranet use only.
I'd say my biggest gripe with JSF though is that the components never do what I want, or they produce garbage HTML, so I have to either override the renderer and write my own, or just write a whole new component. Pretty much everything I do requires a new component, oh that's easy... really? It's minimum 3 classes, plus I have to edit (or create) a tld file. Then I have to add the renderer and component to faces config. It's just a big pain really.
I've discussed with one of the other developers and we both agreed that after a while we should have a solid library of our own components and maybe then we can develop applications more quickly.
I find the myfaces mailing list alright. But the documentation is very lacking, even 3 years later.
Posted by Matt Rossner on February 12, 2008 at 09:54 PM MST #
Posted by Shahram Niki on December 10, 2008 at 09:58 PM MST #
Posted by Lincoln on January 04, 2009 at 07:08 PM MST #
Posted by Lincoln on January 04, 2009 at 07:08 PM MST #
Posted by thepigs on October 23, 2009 at 03:19 AM MDT #
Posted by thepigs on October 23, 2009 at 03:19 AM MDT #
Posted by Arun B on November 30, 2009 at 03:24 PM MST #
Posted by Arun B on November 30, 2009 at 03:24 PM MST #
Cough...Bulls**t...cough. I spent five weeks on Mojarra JSF 1.2 specification just to create a form that has options to be selected for submission, then lists the result as 10 records per page, have a page selector, navigate to a second form and back to the first form - I can do all this in two weeks in Struts or other MVC - and this is starting anew. Five weeks to do something simple like the above - give me a break! JSF is crap...
Posted by Chuong P on November 30, 2009 at 06:09 PM MST #