JSF in SF

Tuesday, February 21, 2006

Usability problems in JSF

JSF is not perfect, nor the greatest thing since sliced bread. There, I said it!

What bugs me most (and remember, I'm still a big fan) is that JSF was supposed to be really easy-to-use. In many ways, it is very easy. But the reality isn't always quite so sweet. There's shortfalls that make the learning curve longer than it should be, and they are fixable.

The most annoying problem is that errors simply result in big stack traces. There's nothing wrong with stack traces per se, but by themselves they're totally insufficient for error diagnosis. Real diagnosis requires at a minimum:

  • Line and column numbers, as well as file name. And even better, the snippet of content from that document that matches up.

  • If an EL expression fails, information on what part of the EL expression failed. (When a complicated expression like #{foo.bar.baz == my.other.expression} fails, it's very hard to figure out what went wrong.)

In general, all exceptions thrown anywhere in JSF or JSPs should be vetted to ensure that they:
  • Contain a meaningful, useful error message
  • Contain enough context to point out what bit of user content failed
  • Never, ever drop the base error, if one is being wrapped
A second category of annoyances in JSF consist of "nothing happened" problems. For example, if a validation error stops you from going on to Invoke Application, but you've forgotten to add an tag or something similar to your page, all that you see is - nothing.

Finally, when you do figure out what you've done wrong, quite often you need to bounce the server to pick up the changes. Any changes to WEB-INF/faces-config.xml require this. That's a huge productivity hit.

So, that's my hit list for JSF usability problems. What are your biggest JSF usability concerns?

[PS: Yes, I edited the wording a bit. It was coming across as an angry rant that JSF isn't useable, which isn't where I'm coming from.]

222 Comments:

  • I agree that error handling could be better-- a majority of it is fixable now. Other than that, I think JSF should be stateless as in request scope. Create the intended view early, decode the view (we are guaranteed state transfer because of form relationships), and then continue. Secondly, provide some front controller mechanism, maybe that's inherent in doing a postback with an immediate action during decode?

    By Blogger Jacob Hookom, at 7:47 AM  

  • The thing that bothers me the most about JSF are DataTables. I wish I had an idea to replace them but I don't. :) The things that bug me the most about them are:

    1. I hate the fact that I can traverse my component tree and manipulate the value of components just fine until I reach a DataTable. DataTables seem to step outside of several basic JSF concepts.

    2. UIData is very complex with several ugly cluges which make it very hard to extend. (ie the saved component values for recursive tables and many others)

    Mike

    By Anonymous Anonymous, at 9:03 AM  

  • Jacob: I don't see statelessness as helping ease of use - in fact, I see that approach as hurting usability. It certainly could improve scalability, but that's not the same thing.

    Mike: yeah, UIData is a pain. The underlying problem for us on JSF of your (1) is how do you write out hundreds if not thousands of cells without creating hundreds or thousands of components? For (2), that's a combination of UIData being an ugly component, and of state saving being poorly designed in JSF (see a prior post) - if state saving was done well, the whole "saved component values" thing would just be state saving, period.

    By Blogger Adam Winer, at 9:18 AM  

  • A-Dub: Stateless as in request scope doesn't hurt, you still have the 'reachability' that you do currently, just that components are instantiated early. Usability wise, state saving already sucks, so given our current condition, what's default request scope instantiation going to hurt, but help scalability? :-)

    By Blogger Jacob Hookom, at 9:26 AM  

  • Jacob: we can take this to e-mail :), but "we are guaranteed state transfer because of form relationships" is false. True enough for basic form components, yeah, but false once you have more interesting UI components on the page.

    By Blogger Adam Winer, at 9:56 AM  

  • A.W: I know we have the more interesting issues, but at least the current implementations provide a scope to page state (forms) that can be scaled. I'm not specifically referring to doing away with serialized view state, just noting that there's some flexability in component implementations given the expectations of current implementations.

    By Blogger Jacob Hookom, at 10:24 AM  

  • mike, if you are looking to 'reach into' a UIData to operate on some child components, then JSF 1.2 now includes UIComponent.invokeOnComponent(...) which will find the correct component and pass it to a ContextCallback parameter-- very much like listeners in Swing.

    By Blogger Jacob Hookom, at 2:43 PM  

  • I also echo the error handling issue, with an extra wrinkle. Not only would I like better error messages, I'd also like a means of catching and handling some errors.

    In particular, I generally use Managed Bean setter methods as a place for my bean initialization logic. I can cleanly inject web request parameters, and use it to load data. I'd like some mechanism to catch and report any load errors. It would also be useful to gracefully handle other setters, for integration with model objects with internal validation logic.

    Also: support collections other than lists.

    By Anonymous Anonymous, at 8:09 PM  

  • What about a more basic thing like you're restricted to use Lists. Now since the collections API is quite good (except maybe for the Bags part), we've got a restriction to use lists. And we're stuck with glue code once more. Didn't SUN learn a thing with EJB < 3.0 ?
    Another thing is SelectItems, which are workable, but why not have 2 attribute to them where it should retrieve key and value?

    By Anonymous Anonymous, at 12:09 AM  

  • Koen, anonymous,

    The problem with supporting collections other than lists is that UIData really does want indexed access; you can display a 10,000 row data set, and ask to see rows 9,000 to 9,010.

    We could support arbitary collections, but performance would be awful for large collections that aren't Lists. Which is a difficult ease-of-use question: are we better off with a scenario where it always just works, but can be hideously slow if you don't know what you're doing?

    OTOH, we'd already be slow if you picked a LinkedList and loaded it with a large number of items - but OTOOH I'd be hard pressed to imagine anyone doing that.

    What I do wish is that UIData's support for data types was pluggable; in the same way that you can use PropertyResolver (or ELResolver) to add support to EL for a new indexed type, shouldn't you be able to do so with UIData?

    By Blogger Adam Winer, at 10:39 AM  

  • Anonymous: catching and handling load errors is a very good point - ditto exceptions in action methods. For now, you might consider using Spring-JSF integration; for JSF 2.0, we should consider stealing, um, er, borrowing key concepts or annotations.

    By Blogger Adam Winer, at 10:42 AM  

  • Adam,

    I'd like to see support for GET submits, or some facility that supports GET-like submits conveniently. Out of the box, JSF doesn't provide this functionality very easily i.e. bookmarkable URLs, hackable URLs, readable URLs, reliable URLs, etc. Also, if possible, I'd like to hear the reasons why it is recommended that all form submissions in JSF happen via POST

    Thank you,

    -Marc

    By Anonymous Anonymous, at 12:49 PM  

  • Marc,

    Good bookmarkability is a significant issue, but I'm not trying to gather feature requests here - I'm looking specifically for usability problems. Point taken, though.

    By Blogger Adam Winer, at 4:23 PM  

  • Marc: JSF component requests are Posts since they modify the state of the server as per W3C. In terms of GET requests, you could easily create 'foo.jsp', create a backing bean that has #{param.id} as a property of it, and then call 'foo.jsf?id=4322' and you would accomplish GET requests. No one says that all JSF requests have to be POSTS, just component requests are usually done this way. If you are looking for a 'front controller' as in Struts, then you could easily write a PhaseListener or another type of JSF Listener that does RoR-like mappings to method invocations where '/faces/beanA/action' will invoke #{beanA.action} as a front-controller, supporting GET/stateless requests.

    By Blogger Jacob Hookom, at 9:09 PM  

  • I also agree error reporting needs improvement. We use MyFaces and Tobago and sometimes the stacktraces are 3+ screens long and repeated 2-3 times... which only makes for harder-to-find bugs.

    Can error reporting be improved in JSF/MyFaces?

    By Anonymous Anonymous, at 11:03 AM  

  • Here are the things wrong with JSF, in my anonymous opinion. These, of course are in addition to what has already been pointed out.

    1) One that makes JSF terrible to use is the JSF EL. I'm not sure if you mentioned anything about this before, but it is awful not being able to call methods requiring parameters or methods that don't start with "get", for that matter. There are a number of other limitations I can't think of offhand that make using JSF EL absolutely awful.

    Say for instance, I'm writing an app that links from a list to details on an item. I could simply have a getItem(id) method and set the ID somewhere in a session or request variable without having to code in extra stuff in my JSF backing classes to retrieve it. Better yet, I could just get the same list I used previously and call the item(#) method without having to code ANYTHING to retrieve the individual item details.

    2) HTML - Ideally, I would like to avoid writing HTML at all. JSF components aren't good enough to do that yet, so injecting HTML is the only way to accomplish certain tasks. Wrapping stuff in verbatim tags all over the place is rediculous. On the same note - writing custom components could be MUCH easier if pages were logically rendered (you could mix HTML, JSTL, and JSF without problems). Take a look at Tapestry, you can have someone who doesn't know anything about Java programming write HTML for custom components. In ADF Faces, there's a "region" tag which allows you to define custom "regions" which are similar to templates and pass named attributes them like templates. This should be a standard feature in JSF, but implemented such that you can have someone write a component in HTML/JSTL that way.

    3) JSTL... This is supposed to be better with the upcoming releases of the corresponding technologies. Looking at the changes, I don't think it's going to be as much of an improvement as it needs to be.

    All in all, I hate working with JSF. As someone said before, the problems with it make it too difficult to work with all the good stuff about it. I'm going to go back to writing C++ CGI scripts...

    By Anonymous Anonymous, at 6:30 AM  

  • Interestingly, Facelets solve the aforementioned problems #1 and #2... if only they had better ADF support... Adam? :)

    By Anonymous Anonymous, at 6:03 AM  

  • Oh, and Facelets solve the error reporting problems you mention as the bulk of your blog: https://facelets.dev.java.net/.

    :)

    By Anonymous Anonymous, at 6:04 AM  

  • Taking the latest comments in reverse order...

    I definitely know Facelets helps a number of the error reporting details; but it doesn't (and can't) help 'em all.

    In regards to: "if only [Facelets] had better ADF support..." One of the contributed libraries to Facelets is full ADF Faces support - as best I know, ADF Faces has far better Facelets support than any of the other major component libraries.

    "JSTL"... it will work with JSF 1.2.

    "HTML... Ideally, I would like to avoid writing HTML at all. JSF components aren't good enough to do that yet, so injecting HTML is the only way to accomplish certain tasks. Wrapping stuff in verbatim tags all over the place is rediculous. ... Take a look at Tapestry"

    First, check out ADF Faces. You can easily build many pages without any HTML at all - I do all the time. Second, verbatim tags are history as of JSF 1.2. (I'm looking for usability problems that haven't been fixed already). Finally, you don't want to write any HTML, but you're suggesting we should look at Tapestry? That seems inconsistent.

    "The JSF EL ... it is awful not being able to call methods requiring parameters or methods that don't start with "get", for that matter".

    Well, I like not exposing every single method into the EL; it keeps my designs clean and stops users from injecting behavior where simple data retrieval is more appropriate. On occasion, parameterized methods would be handy, I agree. But in general, claims that the EL makes developing JSF applications unbearably painful is just so much hyperbole. The point of this post was to look for constructive feedback.

    By Blogger Adam Winer, at 9:30 PM  

  • One of the most frequent issues hit by JSF users is request-scoped data being used by page-scoped components, typically with UIData or UICommand components.

    It seems as if every framework out there "solves" the problem using a variation of Tomahawk's saveState component, which extends a request-scoped component to page-scoped.

    I think having a saveState equivalent as part of JSF would solve a large set of JSF usability issues. Sure, it's easy enough to use t:saveState once you know about it, but because it's not part of the standard, there's a lot of pain involved getting to that state, and every person has to be individually-trained to use t:saveState or an equivalent.

    What about the possibility of a page-scope for managed beans? It wouldn't be as flexible as saveState and the alternatives, but it'd be more visible and would solve most of the use-cases.

    Or perhaps a better solution is to add t:saveState as a core jsf tag.

    By Anonymous Anonymous, at 11:10 AM  

  • I18N ... maybe a topic just as boring as error handling. But, since you brought up usability, I'll take my chance! Writing international applications will cause the experienced developer to have many late night debugging sessions. And the average developer will be lost. I maybe spend 15%-20% of my web development time figuring out how my web components handle I18N issues.

    In theory, I18N should be easy, but reality is different. This is true on any level: core Java, J2EE, JSF, available component libraries.

    Note that many Java libraries assume that there is one Locale. This is not true in a web context, where you have typically different locales per request. In my app, a German speaking Swiss hotelier might serve a Japanese customer, so there might be a mix of everything (even in a single thread).

    If you read the mailing lists of my-faces or facelets, you see that many people struggle with character set issues. It's a pain! Maybe 80% of Java Web developers think they are doing UTF-8, and 80% of them are in fact delivering ISO 8859.


    People in central Europe separate fractional digits with a comma, whereas the anglosaxon region uses points. This is well known. Unfortunately, central Europeans got trained and used to the point, so they enter a point even in properly internationalized apps. My Java web app (I guess it's a J2SE problem) now interprets the . as a thousands separator, multiplying the amount by thousand. Stupid, but true. I have no means against that, so I need to remove the nice f:validateDoubleRange validator and fall back to hand-parsed strings.

    To give another awful example. I'm using the ADF selectInputDate control. If you are in a timezone before GMT, the date will be decreased by one day on every submit. Cool, isn't it? I don't know who's to blame for that, but essentially it goes like this: 1. April 2006 0:00 CET => 31 March 2005 GMT 23:00 => cut-off for display 31 March 2005 => 31 March 2005 GMT 0:00 => 31 March CET 1:00 cut-off because db only stores date part => 31 March CET 0:00. Welcome to time zone hell, one of the darkest corners of I18N.

    So, my usability issue is: never forget about I18N. There are locales, charsets, timezones, and others. They need to be configurable, they need to be documented, they need to be tested. And there should never be any "well-meant" assumptions (the JDK is full of them)...

    my 2 cents
    Frank Felix

    By Anonymous Anonymous, at 2:17 PM  

  • The biggest problem with JSF is that it requires many backing beans to live in session scope. I have no clue how I should sell this to my customers. Just imagine amazon would use JSF and tell you that you can't view two products at the same time (or strange things might happen when you click on the add to cart button on the first page) [and you can't use bookmarks on the product pages].

    In rare cases this might be okay, but there must be a clean way to keep the state on the client for the other cases.

    Yours,
    Stefan

    By Anonymous Anonymous, at 2:09 PM  

  • I'm not sure if I may be missing some of the functionality provided by JSF but it's been my experience that adding custom javascript functions to a JSP page is a real pain.

    The problem (as I perceive it) is JSF's complex naming schemes for form elements: i.e. myView:myForm:myInput.

    This makes writing robust javascript very cumbersome.

    Or am I missing something that EL can do for me in my javascript functions?

    By Blogger werner, at 12:12 AM  

  • I'd echo Stefan's concerns, big time. We're now trying to figure out how to hack around this JSF limitation.

    Another usability problem: errors mess up the navigation! Once the app gets an exception, the user is stuck and can't navigate anywhere without getting the same stack trace! With action oriented frameworks, I can pick up from where I left off! Sure, I'll have to prevent that problem before the app goes to prod, but during dev it's a huge usability problem for me, the developer!

    But the biggest problem I have is non-upgradability. With any other framework, I can upgrade anytime. With JSF, a lot of problems are "already fixed in 1.2!!!" Well that doesn't do me any good. I'm not using Java 5. My employer isn't going to pay IBM another $15,000 just so the lowly developer can use the next JSF version!

    By Anonymous Anonymous, at 7:13 AM  

  • I'd agree that some aspects of JSF are very good, but the remaining 20-30% that forms the bad parts make using it absolutely unbearable, enough IMHO to steer clear of it and fall back to something you know works. The amount of times I've been stuck for literally hours trying to get a component to behave, or a checkbox to remain checked, a table row selected etc is just rediculous. Perhaps everything I've run into are implementation issues rather than spec, I'm not sure. One problem I've just solved was the magically invocation of setting immediate=true. The 'immediate' flag is madness.

    By Anonymous Anonymous, at 7:54 PM  

  • can anybody please tell me alternative for t:savestate because of this i m getting memory heap problem ,the value i am going to save in it is creating problem as i think
    if i am wrong please correct me

    By Blogger kelly, at 10:20 PM  

  • I am new to JSF, i found one problem, that is printing of validation messages in inconsistent order. May be i dont know the way, but i did not find any solution to print the validation error messages with h:messages tag, according to field order. It just printing randomly. Please help me if any one knows the solution.

    By Blogger Unknown, at 1:13 AM  

  • the 'reachability' that you do currently, just that components are instantiated early.
    Buy Assignment | Buy Coursework | Buy Dissertation

    By Anonymous Anonymous, at 12:00 AM  

  • maybe that's inherent in doing a postback with an immediate action during decode?
    Buy Essay | Buy Thesis

    By Anonymous Anonymous, at 12:00 AM  

  • Hi,
    This is the single most problem that occurs in JSF and I personally don't like to use JSF due to this.


    Custom Essays

    By Blogger Unknown, at 3:26 AM  

  • Nice post! Thanks and keep on sharing
    online website design | web design | free website design | Real soft tech

    By Blogger Aria Kerry, at 5:36 AM  

  • I prefer to buy business plan for developing new system!

    By Blogger Larah, at 6:12 AM  

  • Amazing one, i appreciate this work.... Buy assignment

    By Blogger Unknown, at 10:39 PM  

  • That is really very good article. I am glad to know. Thanks!payday loan direct lender

    By Blogger Unknown, at 6:18 AM  

  • I am happy to find this very useful for me, as it contains lot of information. I always prefer to read the quality content
    ada

    By Anonymous Gebelik, at 7:23 AM  

  • JSF is not perfect, nor the greatest thing since sliced bread. There, I said it!

    What bugs me most (and remember, I'm still a big fan) is that JSF was supposed to be really easy-to-use. But the reality isn't quite so sweet. payday loan lenders

    By Blogger Unknown, at 4:39 AM  

  • Hey, Thanks for sharing such a nice post.. I really like to read these type of posts. payday loan lenders

    By Blogger Unknown, at 7:35 AM  

  • a validation error stops you from going on to Invoke Application, but you've forgotten to add an tag or something similar to your page,
    same payday loans

    By Blogger Unknown, at 11:55 AM  

  • Great ....You have beautifully presented your thought in this blog post.cash payday

    By Blogger Unknown, at 2:06 AM  

  • Thanks for sharing. It is interesting
    scan tool

    By Anonymous AutoHex, at 12:57 AM  

  • I think JSF should be stateless as in request scope. logo design , I like it .

    By Blogger marven, at 11:40 PM  

  • Half way through reading your post I have decided against getting involved with JSF in any way. I have a limited brain capacity and even more limited patience. I can not handle the things that goes wrong and I need to figure out.

    By Anonymous auto insurance quotes, at 12:14 PM  

  • they were is a pure fiction, a fiction necessary to make the case against Dick Scruggs, Sidney Backstrom and Zach Scruggs -- a fiction necessary for the government to win the war.
    Bankruptcy San Diego

    By Blogger Unknown, at 11:32 AM  

  • they were is a pure fiction, a fiction necessary to make the case against Dick Scruggs, Sidney Backstrom and Zach Scruggs -- a fiction necessary for the government to win the war.
    Bankruptcy San Diego

    By Blogger dubaiexperies, at 9:55 AM  

  • By Anonymous Anonymous, at 9:01 AM  

  • Just about to start digging into JSF. Now I'm wondering whehter or not I should. I'll have to get bailed out by my buddy at Tucson Printing A-gain...

    By Anonymous Anonymous, at 3:28 PM  

  • I really loved reading your blog. It was very well authored and easy to understand. Unlike additional blogs I have read which are really not good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he enjoyed it as well!
    Plus Size Sarong

    By Anonymous Anonymous, at 7:38 AM  

  • There are some disadvantaged in JSF which I noted.
    1. There is no benchmarking report or promise from Sun Microsystems about the performance of JSF framework. By seeing their concept I believe it is not suitable for high performance application.
    2. The specification doesn’t consider bookmarking facility.
    3. Hardly a very few examples available for developing dynamic pages including new component and removing a component from a page based on business rule.
    4. 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? Form submission for page navigation make complex coding for simple requirement like Cancel button. Read here to know the work around.
    5. Datatable component requires same data from bean on restore view phase. If the data retrieved from database, this will have impact on performance. Click here to know more about this issue.
    6. There is no tight coupling between managed bean and phase listener. This is a major drawback of JSF which makes JSF phase listener feature unusable.
    7. Default error message is not good. Need to customize the default error message.
    8. Not Scalable. It uses session object to store the component state across the request. In server farm environment it is too costly to replicate the session data.

    Regards,
    Deana Meske
    Brochure Design.

    By Anonymous Anonymous, at 6:21 AM  

  • The most annoying problem is that errors simply result in big stack traces. There's nothing wrong with stack traces per se, but by themselves they're totally insufficient for error diagnosis. Real diagnosis requires at a minimum:
    http://sfjsf.blogspot.com/2006/02/usability-problems-in-jsf.html

    By Blogger Unknown, at 12:55 AM  

  • The most annoying problem is that errors simply result in big stack traces. There's nothing wrong with stack traces per se, but by themselves they're totally insufficient for error diagnosis. Real diagnosis requires at a minimum:
    Mothers Day Flowers

    By Blogger Unknown, at 9:41 AM  

  • Thank you admin

    By Anonymous Chat Sohbet, at 9:55 AM  

  • Thank you for the smart response set up. I wonder what would I do without the help of you guys as I am useless in working it out for myself.logo design

    By Blogger Adrian, at 6:27 AM  

  • I got lot of useful information from this site. I recommended every one to read this site,Great articles. Thanks for sharing!
    Carbon Fiber Paddle

    By Blogger Unknown, at 12:15 PM  

  • i like this article and you guys send a veryy great comment about JSF,

    By Anonymous debt consolidation company, at 5:00 AM  

  • I will always give a nice thrust look in to you from my bookmark feed. Coffee I don't actually comment and don't like to spend time in typing the comment. But here I have to do this because this deserves a good like.

    By Anonymous rims financing, at 9:07 AM  

  • thanks a lot, I have not quite understand about your article but from the little that I read I can understand what she meant,
    Dog Life Jacket

    By Blogger Unknown, at 7:04 AM  

  • That a nice topic to discuss, and i believe it need some research about an artwork that is not readily comodifiable was sold in a unique arrangement devised by the private collector Pariuri Sportive

    By Blogger fullbet, at 6:31 PM  

  • I'm happy I found this blog! From time to time, students want to cognitive the keys of productive literary essays composing. bonus unibet

    By Blogger fullbet, at 6:33 PM  

  • Yea nice day.. Your article is quite uplifting. I never believed that it was feasible to accomplish something like that.
    SARONG

    By Blogger rose, at 10:12 AM  

  • I admire the way you express yourself through writing. Your post is such a refreshing one to read. This is such an interesting and informative article to share with others. Keep up the good work and more power. Thanks!

    By Anonymous tax attorney, at 8:50 AM  

  • Well, like I said I wish I had a solutions. :) But actually as I was thinking of it a number of my problems with #1 could be solved if perhaps UIData provided an overloaded get Children() method that would accepted a row Index and returned a list of children containing the data for that row.
    Austin Real Estate

    By Blogger rose, at 2:33 AM  

  • Well, like I said I wish I had a solutions. :) But actually as I was thinking of it a number of my problems with #1 could be solved if perhaps UIData provided an overloaded get-children() method that would accepted a row-index and returned a list of children containing the data for that row.However, this method would need to have the requirement of not messing up the current UIData's rowindex, in case it is in the middle of an iteration, and would have to be able to maintain the state of any of the returned components if their values changed.
    Austin Custom Home Builders

    By Blogger man, at 4:54 AM  

  • Could not help bookmark your site :)

    By Anonymous Self assessment tax return, at 4:52 AM  

  • This is one of the best blogs I've read lately.

    By Anonymous Bonbons, at 2:24 AM  

  • Hi guys, I want to say thanks for this useful information, I shared it on my wall to be honnest cause I LIKE it(:

    By Anonymous Acheter levitra, at 6:07 AM  

  • Thanks for sharing, much appreciated and useful post, congrat and keep on track!

    By Anonymous Levitra Online, at 8:49 AM  

  • The thing that bothers me the most about JSF are DataTables. I wish I had an idea to replace them but I don't

    By Anonymous Fast Payday Loans Cash Advance, at 11:39 PM  

  • Too bad you don't write that much anymore.

    By Anonymous Corian Worktops, at 7:20 AM  

  • I recently came across your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.

    By Anonymous article directory, at 9:50 AM  

  • This site was very helpful for me thanks a lot for sharing such newsy and informative site in this blog. Thanks a lot for the useful stuff because it was very helpful for me.

    By Anonymous article directory, at 9:51 AM  

  • I found your website perfect for my needs. It contains wonderful and helpful posts. I have read most of them and got a lot from them. To me, you are doing the great work. Carry on this. work at home In the end, I would like to thank you for making such a nice website

    By Anonymous cheap stromectol, at 5:49 AM  

  • I am so thrilled for having found your site.

    By Anonymous Asbestos Training, at 4:21 AM  

  • hey buddy,this is one of the best posts that I�ve ever seen; you may include some more ideas in the same theme. I�m still waiting for some interesting thoughts from your side in your next post.

    By Anonymous viagra 100mg, at 3:00 PM  

  • Really great post, Thank you for sharing This knowledge.Excellently written article, if only all bloggers offered the same level of content as you, the internet would be a much better place. Please keep it up!

    By Anonymous online viagra, at 3:24 AM  

  • Please one more post about that.I wonder how you got so good. This is really a fascinating blog, lots of stuff that I can get into. One thing I just want to say is that your Blog is so perfect

    By Anonymous viagra on line, at 3:53 AM  

  • hey buddy,this is one of the best posts that I�ve ever seen; you may include some more ideas in the same theme. I�m still waiting for some interesting thoughts from your side in your next post.

    By Anonymous viagra generic, at 3:56 AM  

  • wow. I am so interested reading about this topic.
    Home Made Energy Product Review and Green DIY Energy Product Review

    By Blogger wdawson, at 3:23 AM  

  • I could tell how great you are in your field of interest. You could relate in each detail very well. Thank you for spending a time on sharing such informative writings to us. I will bookmark your page and looking forward to read some more of your writings soon.

    By Anonymous car title loans arizona, at 8:14 AM  

  • Thank you for sharing to us.there are many person searching about that now they will find enough resources by your post.I would like to join your blog anyway so please continue sharing with us

    By Anonymous buyviagra, at 2:43 PM  

  • Wow, nice post,there are many person searching about that now they will find enough resources by your post.Thank you for sharing to us.Please one more post about that..

    By Anonymous viagra 100mg, at 3:49 PM  

  • Please one more post about that.I wonder how you got so good. This is really a fascinating blog, lots of stuff that I can get into. One thing I just want to say is that your Blog is so perfect

    By Anonymous viagra generic, at 3:49 PM  

  • Please one more post about that.I wonder how you got so good. This is really a fascinating blog, lots of stuff that I can get into. One thing I just want to say is that your Blog is so perfect

    By Anonymous viagra generic, at 4:25 PM  

  • I been of pretty good luck this time. I believe there are so many worthwhile information I can get here. I will be waiting for more development. Please keep em coming.
    tenant screening | Medical Bankruptcy

    By Blogger The Oracle, at 11:56 AM  

  • I been of pretty good luck this time. I believe there are so many worthwhile information I can get here. I will be waiting for more development. Please keep em coming.
    tenant screening | Medical Bankruptcy

    By Blogger The Oracle, at 11:56 AM  

  • Nice post!!!
    Really helps me!!

    By Anonymous Andres, at 1:47 PM  

  • I must say i loved this post. You describe this topic wonderfully.
    When hiring home contractors it’s factor to opt for a trusted name in construction.
    Experienced and efficient staff should shoot for excellence and absorb every detail in your home.

    By Anonymous buy flagyl online, at 3:47 AM  

  • nice and helpful article.

    http://www.autohex.com/

    By Anonymous scan tool, at 8:38 AM  

  • Please one more post about that.I wonder how you got so good. This is really a fascinating blog, lots of stuff that I can get into. One thing I just want to say is that your Blog is so perfect

    By Anonymous viagra online uk, at 10:30 AM  

  • Thank you for sharing to us.there are many person searching about that now they will find enough resources by your post.I would like to join your blog anyway so please continue sharing with us

    By Anonymous alternative to viagra, at 6:28 PM  

  • this blog post is very good! i glad i found it on blogspot


    --
    seo los angeles

    By Anonymous Anonymous, at 12:43 PM  

  • Thank you! I didn't know they picked up on it until I saw your comment.

    By Anonymous viagra costs, at 2:40 PM  

  • You can buy essays if you want to forget about essays writing problems. These are not just empty words, that really works.

    By Blogger JimHalpert, at 12:16 PM  

  • AZELEX cream (azelaic acid cream) 20% contains azelaic acid, a naturally occurring saturated dicarboxylic acid.

    By Anonymous john, at 1:35 AM  

  • Good post. Very impressive writing, thanks for sharing.

    By Anonymous cheap android tablet, at 6:21 PM  

  • I found this informative and interesting blog i think its very useful and knowledge able.I would like to thank you for the efforts you have made in writing this article.
    Abilene Roofing Companies

    By Blogger dubaiexperies, at 12:15 PM  

  • Great to see such a great blog like yours.

    By Anonymous Play Sand, at 8:27 AM  

  • Thanks for sharing your unique point of view on this subject.

    By Anonymous Tax Return, at 1:05 AM  

  • I can not keep this blog just for myself, so I'll forward it to all of my friends

    By Anonymous Asbestos Removal, at 4:56 AM  

  • awesome thanks for the great info, its difficult to find helpful stuff regarding jsf.

    thanks :)

    By Anonymous David House, at 8:18 AM  

  • Thanks for sharing! Custom writing

    By Anonymous Custom writing, at 2:06 AM  

  • I have few words to say about this, JSF is the greatest
    Payday loan lenders

    By Blogger Phil, at 12:46 PM  

  • JSF error handling is so poor...
    Payday loan lenders
    Web Design in Los Angeles

    By Anonymous Steve, at 12:47 PM  

  • Great website, looks very clean and organized.

    By Anonymous lesbian bondage, at 12:15 AM  

  • Useful information ..I am very happy to read this article..thanks for giving us this useful information. Fantastic walk-through. I appreciate this post.

    By Anonymous bondage sex, at 2:04 AM  

  • I can't wait to read your next post on this topic.

    By Anonymous Consultant ERP, at 11:40 PM  

  • You're such an amazing blogger. You should write as often as possible.

    By Anonymous Office Supplies, at 2:10 AM  

  • Hello I enjoyed yoiur article. I think you have some good ideas and everytime i learn something new i dont think it will ever stop always new info , Thanks for all of your hard work!.

    By Anonymous cheap viagra uk, at 6:59 PM  

  • Nice Blog.. and also great post keep it up :)

    By Anonymous utorrent download, at 11:54 PM  

  • thanks for the great blog

    By Anonymous online shopping, at 4:56 PM  

  • I am impressed, Very rarely do I discover a blog that is both educative and entertaining. Your thoughts are important; the issue is something that not enough people are speaking intelligently about. I m very happy that I stumbled across this in my search for something relating to it.

    |Caillou Games|
    |Cooking game|
    |sondaj|
    |roman coins|

    By Blogger ucuzsondaj, at 4:16 AM  

  • Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
    billig a-kasse
    white kitchen cabinets
    gain height
    Increase Height

    By Anonymous Anonymous, at 7:55 PM  

  • I’ve been browsing on-line greater than three hours nowadays, yet I never found any fascinating article like yours. It is pretty price sufficient for me. Personally, if all website owners and bloggers made excellent content material as you probably did, the web shall be much more helpful than ever before.

    By Anonymous διαγωνισμοι, at 9:38 PM  

  • I could tell that we’re on the same interest and obsession.

    By Anonymous buy generic levitra online, at 2:00 AM  

  • By Anonymous paris hilton sex tape, at 4:39 PM  

  • This is a great resource for people that like well written blogs.

    By Anonymous Find a tradesman on iPhone, at 11:10 AM  

  • this really made me think, thanks

    By Anonymous digital cameras, at 10:52 AM  

  • I am having great difficulty with JSF, hence why I'm at this post!! Will have to read a few more times to solve my problems but thanks!

    clix car safe harness review

    By Anonymous Puppia, at 3:43 PM  

  • thanks for the help

    By Anonymous excessive sweating, at 12:14 PM  

  • really great post

    By Anonymous Edible Arrangements Coupons, at 4:57 AM  

  • Delightful blog ,your article was stuning!

    By Anonymous Edible Arrangements Coupons, at 6:44 AM  

  • Well, Really got the stuff very helpful. I am at begineer level and I think this website would be really helpful to me. coban

    By Blogger Alan, at 10:24 AM  

  • yea a agree with alot of this stuff
    y8 Paint Games Kids Games Friv Car Games Ben10 Games addicting Games

    By Blogger Flash New Games, at 6:07 PM  

  • Great post. I think one of the basic things that we should know know is that we must always make sure that you are safe in every transactions you wanted to indulge with.

    By Anonymous viagra pills, at 2:17 AM  

  • Hi, thank you for sharing this great info. Was just browsing through the net in my office and happened upon your blog. It is really very well written and quit comprehensive in explaining with a very simple language.

    By Anonymous what happens if a girl takes viagra, at 7:09 PM  

  • Nice explanation. I was going to close this website but lucky me I decided to give it a try. This post is really helping and focused on the topic. Cheers!

    By Anonymous dating, at 4:33 PM  

  • very good explanation thanks!

    By Anonymous buy adipex, at 11:44 AM  

  • Pretty nice post. I just stumbled upon your blog and wanted to say that I have really enjoyed browsing your blog posts. In any case I’ll be subscribing to your feed and I hope you write again soon!
    Watch Free Movie Online Watch Free Movies Blog Watch Free Movie Online Without Downloading

    By Anonymous Anonymous, at 3:18 PM  

  • By Blogger Flash New Game, at 5:42 PM  

  • By Blogger Flash New Game, at 5:43 PM  

  • I Really enjoyed your blog. I just bookmarked it. I am a regular visitor of your website I will share It with my friends .Thanks.

    By Blogger Online Eye, at 8:45 AM  

  • Have a nice flash game site. Would you visit. Thank you admin of this site. just click on the links. Thanks again.

    By Anonymous y8, at 3:17 PM  

  • good information means good knowledge. I really enjoyed this article. thanks for good information. Sex Tips

    By Anonymous Sex Tips, at 11:58 AM  

  • Always I enjoy good article . I thank to the article writer. This is helpful with good information. How to Last Longer in Bed

    By Anonymous How to Last Longer in Bed, at 12:02 PM  

  • I'm guessing this isn't about the Joint Strike Fighter program...

    By Anonymous Shin Splints Treatment, at 6:10 AM  

  • *unmoderated

    By Anonymous Web Conferencing Software, at 11:38 AM  

  • Thanks for this information, I'm glad I checked out your blog, now I understand the situation better.

    By Anonymous most efficient solar panels, at 4:35 AM  

  • very great article thanks

    By Anonymous best diet pills, at 12:38 PM  

  • Congratulations for posting such a useful blog. Your blog isn’t only informative but also extremely artistic too. There usually are extremely couple of individuals who can write not so easy articles that creatively. Keep up the good writing !!

    By Anonymous διαγωνισμοι, at 5:24 PM  

  • I wanted to say that it's nice to know that someone else also mentioned this as I had trouble finding the same info elsewhere. This was the first place that told me the answer. Thanks.
    wooden swing sets |playset | swing set

    By Anonymous swing sets, at 1:10 AM  

  • This blog post is excellent probably because of how well the subject was developped. I like some of the comments too though I would prefer we all stay on the suject in order add value to the subject! Phil Wane //
    sterling silversnowflake necklace |Snowflake Earrings | silver snowflake earrings

    By Anonymous Snowflake Earrings, at 3:30 AM  

  • Brilliant post and useful information Looking forward to future posts in this field thanks A very interesting article, interesting ideas and a lot of good questions posed Thanks for your insight for the great written piece

    center for spinal surgery kentucky |center for spinal surgery tennessee

    By Anonymous center for spinal surgery kentucky, at 3:31 AM  

  • Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It's always nice when you can not only be informed, but also entertained! I'm sure you had fun writing this article.

    spa offers dubai | dubai special offers | promotions dubai

    By Anonymous spa offers dubai, at 4:28 AM  

  • Your blog is absolutely fantastic, congrats.

    By Anonymous Toner, at 5:06 PM  

  • You have a nice blog!

    By Anonymous Entertainment Agency, at 3:52 PM  

  • Thanks for a nice share you have given to us with such an large collection of information. Great work you have done by sharing them to all. simply superb. Alta White

    By Anonymous Alta White, at 7:53 PM  

  • Next time you approach this topic, please send me an email.

    By Anonymous Employment Solicitors Slough, at 12:33 PM  

  • I don't think that JSF is not that usable as obviously there are some drawbacks for sure but still the advantages are far more than the drawbacks of JSF.

    By Anonymous iphone accessories, at 5:51 AM  

  • I'm just trying to get my head round JSF so useful info for me thank you.

    anti-pull dog harness review

    By Anonymous Joanne, at 3:23 PM  

  • I agree with your views that you share with us in this post, I like your site, this is really an great post,so keep posting like this.

    By Anonymous HelpFixAnyPC | PC Repair Leicester, at 2:24 AM  

  • You can try windows 8 for help.

    By Anonymous windows 8, at 9:50 AM  

  • By Anonymous kulta rahaksi, at 3:41 AM  

  • A great post with out doubt. The information shared is of top quality which has to get appreciated at all levels. Well done keep up the good work.

    By Anonymous Kamagra UK, at 10:41 PM  

  • This is really an great post, I am totally agree with you views , this is really an informative article ,so keep posting like this, I am waiting for your new post as well.

    By Anonymous Web Design Bedfordshire, at 4:10 AM  

  • yes finally someone gets it
    buy backlinks
    backlink service

    By Anonymous buy backlinks, at 1:09 PM  

  • Thank you, thats very interesting information. I need to share with my friends.

    By Anonymous Buy Kamagra Uk, at 3:53 AM  

  • Like every other technology JSF is also having some drawbacks but we can not ignore its advantages over it.

    By Anonymous compare motor trade insurance, at 5:52 AM  

  • I love your post so much, that I've sent it to all my friends.

    By Anonymous Gynecomastia, at 2:35 AM  

  • A very interesting article

    By Anonymous Best Restaurants Hobart, at 7:31 PM  

  • thanks this was very nice
    beauty tips
    beauty make-up

    By Anonymous Joan Monclaire, at 8:08 AM  

  • You've obviously spent a good deal of time on this. A lot of useful information here.

    By Anonymous Baltimore Travel Guide, at 6:38 PM  

  • thanks for the information really
    edu links
    link building services
    google backlinks

    By Anonymous edu links, at 8:18 AM  

  • Nice! I definitely enjoyed studying it. This subject provided by you is very effective for proper planning.

    By Anonymous health insurance california, at 4:05 AM  

  • Good posting, im subscribing to your rss. Thanks for sharing a very informative article. Many thanks once more

    By Anonymous العاب, at 2:36 PM  

  • You've done a very good job. I must admit you are a terrific blogger!

    By Anonymous Wedding Photographer Maidenhead, at 8:31 AM  

  • Great to see such a well written blog.

    By Anonymous Breast Implants, at 1:43 PM  

  • That is very good comment you shared.Thank you so much that for you shared those things with us.Im wishing you to carry on with ur achivments.All the best.

    By Anonymous fue saç ekim ücreti, at 11:36 PM  

  • This is a wonderful site where we are getting more information. I have been talking with my friend about, he though it is really interesting as well. Keep up with your good work; I would come back to you.wireless broadband internet .

    By Blogger andrew, at 1:42 AM  

  • I really liked the content on your internet site. I know I was meant to seek for posts about Self Storage Lubbock Texas but by accident I came upon your site and I was amazed.wifi in the usa .

    By Blogger andrew, at 2:37 AM  

  • there is great information on this page.

    hosting
    hosting mexico
    hosting en mexico

    By Anonymous hosting, at 9:52 AM  

  • Good exciting content! I would have loved to attend this. Thanks for your work.

    By Anonymous Washington Dc Activities, at 2:25 AM  

  • Your blog has helped me a lot. Thank you!

    By Anonymous SEO services (50%), at 1:39 AM  

  • By Blogger Flash New Game, at 4:58 PM  

  • By Blogger Flash New Game, at 6:46 AM  

  • "I have to agree with those who praised the blog post above. I really enjoyed it and it made me quite curious to see what we are going to see or get on this website in the future, it's exciting for me. "

    By Anonymous collarless mens shirt, at 10:52 PM  

  • would like to thank you for the efforts you have made in writing this post. I am hoping the same

    By Anonymous Get Assignment Help Online, at 3:41 AM  

  • This is quiet a good post. Love it!

    By Anonymous College Essay Writing, at 3:55 AM  

  • nice post, haven't seen such kind of work for a very long time, good show
    Professional Writing Services

    By Blogger Unknown, at 2:36 AM  

  • wery nice tahnks

    By Anonymous chat, at 4:43 PM  

  • It’s a great site to see. That will help for improvisation of me. Will definitely marked as Bookmark.

    business electricity rates


    By Anonymous business electricity rates, at 3:58 AM  

  • By Blogger Alastair Alex, at 5:15 AM  

  • By Blogger Alastair Alex, at 8:01 AM  

  • Found very cool and unique info here in this blog. This is a great addition in my favorite blog list.
    Dell - 13.3"Latitude Notebook 4 GB Memory - 250 GB Hard Drive

    Dell - 14"Latitude Notebook 4 GB Memory - 320 GB Hard Drive

    By Blogger Alastair Alex, at 8:01 AM  

  • By Blogger Alastair Alex, at 8:16 AM  

  • Your website have very interesting article. I got knowledge from here. Besides that, your blog is so popular among the searchers from search engines. It means yours website is very good

    By Anonymous website development company, at 5:20 AM  

  • Your Blog is very good, I like it! Thank you for you sharing!

    By Anonymous web designing bangalore, at 2:12 AM  

  • I really loved reading your blog. It was very well authored and easy to understand. Unlike additional blogs I have read which are really not good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he enjoyed it as well! çizgi film izle

    By Anonymous çizgi film, at 10:44 AM  

  • it love nice topic thanks you
    http://games-m.com/
    http://gamesskill.com/
    http://al3abmix.com/
    http://www.j33x.net/
    http://j33x.com/tag/hguhf/
    http://www.jeuxgratuit7.com/

    By Blogger Taita Web, at 8:57 PM  

  • Its a great pleasure reading your post.Its full of information I am looking for and I love to post a comment that "The content of your post is awesome" Great work.
    http://great-term-paper.com/

    By Anonymous Anonymous, at 1:38 PM  

  • This comment has been removed by the author.

    By Anonymous Anonymous, at 1:41 PM  

  • It is information about nothing! I don’t like it)) Have expand your horizons, recommend the best way for your educaton! The best way to save your money and you time)!why not? say for me!Buy essay online and be happy and free!

    By Blogger TomKorn, at 6:07 AM  

  • Another core course, this class introduces students to the concepts behind building and maintaining collections of library materials. Various collection development tools are introduced, along with practices for managing print, electronic and audiovisual media collections. Students may also discuss challenged materials, budgeting, and working collaboratively. dissertation writing services

    By Anonymous Anonymous, at 5:51 AM  

  • Another core course, this class introduces students to the concepts behind building and maintaining collections of library materials. Various collection development tools are introduced, along with practices for managing print, electronic and audiovisual media collections. Students may also discuss challenged materials, budgeting, and working collaboratively. dissertation writing services

    By Anonymous Anonymous, at 5:54 AM  

  • Some programs require students to enroll in this class. Coursework introduces a selection of technologies that working librarians are likely to encounter in the field. Students generally complete projects that involve planning, budgeting, implementing, measuring and evaluating various technologies. college paper

    By Anonymous Anonymous, at 6:01 AM  

  • Students in the public library or school media tracks may be required to take this class. Lessons focus on historical overviews and collection development of print, electronic, online and audiovisual materials that meet the educational and recreational needs of adolescents. Outreach services are also discussed, along with major trends, authors and genres in young adult literature. paper writing

    By Anonymous Anonymous, at 6:06 AM  

  • Noone like to make mistakes. They ruin all the done work. Here every student can buy essays and get excellent grades, without making mistakes.

    By Blogger Sandra, at 5:15 AM  

  • I would like more information about this, because it is very nice., Thanks for sharing.
    Signature:
    download descargar facebook gratis para Android celular and download free descargar facebook apk and descargar facebook gratis , descarga facebook

    By Blogger Unknown, at 12:29 AM  

  • Good essay writers online!

    By Anonymous chemical research assistance, at 3:18 AM  

  • We are your reliable writing partner!

    By Anonymous research paper help, at 3:26 AM  

  • Cheap academic papers!

    By Anonymous perfect quality papers, at 3:30 AM  

  • My friend has got such a device. He made a review on its use. Custom-Essays-Online.com prepared a great paper for Jim. I even decided to use this service ;)

    By Blogger Unknown, at 12:33 AM  

Post a Comment

<< Home