<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>OcpSoft &#187; OpenSource</title> <atom:link href="http://ocpsoft.com/tags/opensource/feed/" rel="self" type="application/rss+xml" /><link>http://ocpsoft.com</link> <description>&#34;Simple Software&#34;</description> <lastBuildDate>Tue, 27 Jul 2010 15:07:50 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0</generator> <item><title>JSF 1.2 Components (Book Review)</title><link>http://ocpsoft.com/opensource/jsf-1-2-components-book-review/</link> <comments>http://ocpsoft.com/opensource/jsf-1-2-components-book-review/#comments</comments> <pubDate>Wed, 20 Jan 2010 06:56:21 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[JSF2]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[JSF]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=983</guid> <description><![CDATA[As a vocal blogger, I feel responsible for promoting and sharing the good work of others, whether that be technology, creative work, or in this case: a book. I will take no exception to that philosophy when it comes to the JavaServer Faces framework. For a quick read, try the summary. If you are intrigued, [...]]]></description> <content:encoded><![CDATA[<p>As a vocal blogger, I feel responsible for promoting and sharing the good work of others, whether that be technology, creative work, or in this case: a book. I will take no exception to that philosophy when it comes to the <a
target="_blank" href="http://www.javaserverfaces.org">JavaServer Faces</a> framework. For a quick read, try the summary. If you are intrigued, read on! I hope you find this review valuable.<br
/> <span
id="more-983"></span></p><p><strong>In summary:</strong> I would recommend buying this reference if you are a consumer, designer, UI-developer who is working with existing component libraries, Facelets or JSF 2.0, and not so much focused on creating custom Java-components of your own. I don&#8217;t, for every-day web-site components, see why you would need much more than what is featured between the covers of this book. Ian Hlavats does a fantastic job of making bringing JSF to the everyday development setting.<br
/> <br/></p><table><tr><td><a
target="_blank" href="http://www.packtpub.com/jsf-1-2-components-develop-advanced-ajax-enabled-applications/book?utm_source=ocpsoft.com&#038;utm_medium=bookrev&#038;utm_content=blog&#038;utm_campaign=mdb_002041"><img
src="http://ecx.images-amazon.com/images/I/51zwgyza8HL._SL500_AA240_.jpg"></img></a></td><td><h4><a
target="_blank" href="http://www.packtpub.com/jsf-1-2-components-develop-advanced-ajax-enabled-applications/book?utm_source=ocpsoft.com&#038;utm_medium=bookrev&#038;utm_content=blog&#038;utm_campaign=mdb_002041">JSF 1.2 Components</a></h4><p>By Ian Hlavats<br
/> <br/><br
/> Download Chapter 2: <a
target="_blank" href="http://www.packtpub.com/files/7627-developing-jsf-components-sample-chapter-2-facelets-components.pdf">Facelets Components</a> as a PDF</td></tr></table><p><br/></p><h3>In detail:</h3><p>Initially hesitant to buy a reference on components, I have to admit that I was surprised to learn so much by reading through this book. As a member of the JavaServer Faces 2.0 expert group, and a full-time software engineer, components are not my strong-suit. If you&#8217;re at all like me, then you&#8217;re probably asking yourself the same question I did:</p><p>&#8220;What can I learn in this book that I can&#8217;t find on Google? JavaServer Faces has a huge online community, and there&#8217;s a lot of information available already.&#8221;</p><p>It&#8217;s a valid question, but you should keep reading because this book offers something important that I rarely find in blog entries or wikis: &#8220;features you wouldn&#8217;t think to look for; features that you wish you&#8217;d thought of, or don&#8217;t know how to make yourself.&#8221; I wish I had found this book when I started using JSF, because I&#8217;d probably have been more comfortable, and much more productive with our component side of the life-cycle, so to speak; I discovered features of the framework, and pre-made UI-tools that I wish I&#8217;d known about years ago.</p><h5>Things you&#8217;ll learn about:</h5><p>Modal windows, menus, wizards and workflows, AJAX anything with Ajax4JSF, i18n and localization, gCal-like schedules with Apache Tomahawk, multi-field validation, calendars, charts and graphs, file-uploads, user permissions/security, skinning, styling, and all major component libraries are covered in this book (save PrimeFaces, which gets a mere mention.)</p><p>If you think you&#8217;re looking at &#8220;Just another book on JSF component writing,&#8221; that&#8217;s not entirely the case. This book provides real solutions, real examples on how to get started writing JSF applications using existing component libraries and plug-ins. There are two types of chapters in this book: tutorials and references. The tutorials will get you up and running with a quick example, while the reference sections go in depth on usage of individual components within each library.</p><p>You&#8217;ll also (as a bonus, in my opinion) get some appetite-whetting information on the JBoss Seam framework, which is a user-friendly and business-oriented extension to the Java EE technologies. I didn&#8217;t get a very good picture of all of the concepts until I actually looked at the code samples (downloadable here, or just follow the link in the preface,) but that&#8217;s hardly a strong criticism; though, it may have helped if the code samples were more explicitly, frequently referenced.</p><h5>In the end &#8220;The title doesn&#8217;t lie&#8221;:</h5><ul><li>I haven&#8217;t seen a more comprehensive book on component libraries and component writing made available to date.</li><li>JSF2 component writing has been simplified, but if you want to supplement your app with everyday things like in-place editing, accordions, and more, you&#8217;re going to want good examples; this book provides examples in abundance (even examples of JSF2 EzComp, which is a dream to use. UI like it was meant to be)</li><li>Even if components and UI design are not your strong-point, that is exactly why you should read this book; it makes component-based design easy to understand, and easy to implement.</li></ul><p>The author covers many of the advancements in component writing and simplified configuration that are provided by JSF 2.0, but I would have liked to hear some information on the component behaviors model, and mention of integration with frameworks like CDI (JSR-299) and Spring; however, this is not entirely relevant to component writing, and plenty of information exists on sites like <a
target="_blank" href="http://www.javaserverfaces.org">www.javaserverfaces.org</a> or Google.</p><p>My one complaint is that for a book titled &#8220;JSF 1.2 Components,&#8221; it did not explain, or teach me how to create custom Java-based components, which are essential for complex behavior and interaction at some level. JSF 2.0 has done a good job of making Java-based components unnecessary, but this book is titled JSF 1.2 components, thus, I would have liked to see how to write a Java-based component in JSF 1.2.</p><div
class="featured" style="text-align: center;"> <a
target="_blank" href="http://www.packtpub.com/jsf-1-2-components-develop-advanced-ajax-enabled-applications/book?utm_source=ocpsoft.com&#038;utm_medium=bookrev&#038;utm_content=blog&#038;utm_campaign=mdb_002041">JSF 1.2 Components</a> on Packt Publishing<br
/> Download Chapter 2: <a
target="_blank" href="http://www.packtpub.com/files/7627-developing-jsf-components-sample-chapter-2-facelets-components.pdf">Facelets Components</a> as a PDF</div><h3>End notes:</h3><p> Make sure you check out <a
target="_blank" href="http://www.javaserverfaces.org">www.javaserverfaces.org</a>. It&#8217;s a great starting point and reference for JSF that you will undoubtably bookmark if doing a lot of work, and doing the work with this book. Also check out <a
href="http://ocpsoft.com/prettyfaces/">http://ocpsoft.com/prettyfaces/</a> for more information on Pretty URLs in JSF, and building client-facing JSF web applications.</p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/opensource/jsf-1-2-components-book-review/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>PrettyFaces 1.2.3_GA Released</title><link>http://ocpsoft.com/releases/prettyfaces-123_ga-released/</link> <comments>http://ocpsoft.com/releases/prettyfaces-123_ga-released/#comments</comments> <pubDate>Wed, 15 Apr 2009 04:58:46 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[Releases]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[JSF]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[PrettyFaces]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=53</guid> <description><![CDATA[PrettyFaces: Version 1.2.3_GA: binary, source, documentation (stable) Minor Release: 20090415 Added optional &#60;action onPostback=&#8221;false&#8221;&#62; boolean flag to prevent action methods from being called on form postback. Defaults to true; Added optional &#60;query-param decode=&#8221;false&#8221;&#62; to prevent java.net.URLDecode.decode() from being called on a specific managed query-parameter. Defaults to true; Added unit tests for several critical classes. Minor [...]]]></description> <content:encoded><![CDATA[<h3><a
href="http://ocpsoft.com/prettyfaces">PrettyFaces</a>:</h3><p><strong>Version 1.2.3_GA</strong>: <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_GA.jar">binary</a>, <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_GA-sources.jar">source</a>, <a
href="http://ocpsoft.com/prettyfaces/v123">documentation</a> (stable)<br
/> Minor Release: 20090415</p><ol><li>Added optional &lt;action onPostback=&#8221;false&#8221;&gt; boolean flag to prevent action methods from being called on form postback. Defaults to true;<li>Added optional &lt;query-param decode=&#8221;false&#8221;&gt; to prevent java.net.URLDecode.decode() from being called on a specific managed query-parameter. Defaults to true;<li>Added unit tests for several critical classes.<li>Minor to moderate refactoring of PrettyFilter/PrettyContext</ol><div
style="align:center; background:#555; padding:10px"><form
action="http://groups.google.com/group/prettyfaces-users/boxsubscribe"><table
border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td
colspan='2' align="center"><strong>Subscribe to <a
href="http://groups.google.com/group/prettyfaces-users">prettyfaces-users</a></strong></td></tr><tr><td
align="right" width="30%"><label
for="subeml2" style="color:#eee">Email:&nbsp;</label></td><td
align="left"> <input
id="subeml2" name="email" size="18" type="text" /> <input
name="sub" type="submit" value="Subscribe" /></td></tr></tbody></table></form></div><p><br/></p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/releases/prettyfaces-123_ga-released/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PrettyFaces v1.2.3_RC2 Released</title><link>http://ocpsoft.com/prettyfaces/prettyfaces-v123_rc2-released/</link> <comments>http://ocpsoft.com/prettyfaces/prettyfaces-v123_rc2-released/#comments</comments> <pubDate>Wed, 01 Apr 2009 01:21:25 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[PrettyFaces]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[JSF]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[Releases]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=49</guid> <description><![CDATA[PrettyFaces: Version 1.2.3_RC2: binary, source, documentation (stable) Minor Release: 20090331 Servlet forwards are working Subscribe to prettyfaces-users Email:&#160;]]></description> <content:encoded><![CDATA[<h3><a
href="http://ocpsoft.com/prettyfaces">PrettyFaces</a>:</h3><p><strong>Version 1.2.3_RC2</strong>: <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_RC2.jar">binary</a>, <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_RC2-sources.jar">source</a>, <a
href="http://ocpsoft.com/prettyfaces/v123">documentation</a> (stable)<br
/> Minor Release: 20090331</p><ol><li>Servlet forwards are working</li></ol><div
style="align:center; background:#555; padding:10px"><form
action="http://groups.google.com/group/prettyfaces-users/boxsubscribe"><table
border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td
colspan='2' align="center"><strong>Subscribe to <a
href="http://groups.google.com/group/prettyfaces-users">prettyfaces-users</a></strong></td></tr><tr><td
align="right" width="30%"><label
for="subeml2" style="color:#eee">Email:&nbsp;</label></td><td
align="left"> <input
id="subeml2" name="email" size="18" type="text" /> <input
name="sub" type="submit" value="Subscribe" /></td></tr></tbody></table></form></div><p><br/></p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/prettyfaces/prettyfaces-v123_rc2-released/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PrettyFaces v1.2.3_RC1 Released</title><link>http://ocpsoft.com/releases/prettyfaces-v123_rc1-released/</link> <comments>http://ocpsoft.com/releases/prettyfaces-v123_rc1-released/#comments</comments> <pubDate>Thu, 19 Mar 2009 12:20:00 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[Releases]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[JSF]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[PrettyFaces]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=47</guid> <description><![CDATA[PrettyFaces: Version 1.2.3_RC1: binary, source, documentation (stable) Minor Release: 20090319 Managed query-params now accept multiple parameters of the same name: E.g.: String[] names &#8212; would accept a list of parameters (with the same name) from the request Enhanced configuration loading &#8212; PrettyFaces now looks for /META-INF/pretty-config.xml by default, in addition to accepting a comma-separated list [...]]]></description> <content:encoded><![CDATA[<h3><a
href="http://ocpsoft.com/prettyfaces">PrettyFaces</a>:</h3><p><strong>Version 1.2.3_RC1</strong>: <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_RC1.jar">binary</a>, <a
href="http://prettyfaces.googlecode.com/files/ocpsoft-pretty-faces-1.2.3_RC1-sources.jar">source</a>, <a
href="http://ocpsoft.com/prettyfaces/v123">documentation</a> (stable)<br
/> Minor Release: 20090319</p><ol><li>Managed query-params now accept multiple parameters of the same name: E.g.: String[] names &#8212; would accept a list of parameters (with the same name) from the request</li><li>Enhanced configuration loading &#8212; PrettyFaces now looks for /META-INF/pretty-config.xml by default, in addition to accepting a comma-separated list of user config-files in the web.xml init param: com.ocpsoft.pretty.CONFIG_FILES &#8212; submitted by Aleksei Valikov</li><li>JSP support for standard attributes on the pretty:link tag has been fixed. The pretty link will now accept style=&#8217;mystyle&#8217; and other attributes &#8212; from <a
href="http://ocpsoft.com/about">Derek Hollis at OcpSoft</a></li></ol><div
style="align:center; background:#555; padding:10px"><form
action="http://groups.google.com/group/prettyfaces-users/boxsubscribe"><table
border="0" cellspacing="0" cellpadding="0" width="100%"><tbody><tr><td
colspan='2' align="center"><strong>Subscribe to <a
href="http://groups.google.com/group/prettyfaces-users">prettyfaces-users</a></strong></td></tr><tr><td
align="right" width="30%"><label
for="subeml2" style="color:#eee">Email:&nbsp;</label></td><td
align="left"> <input
id="subeml2" name="email" size="18" type="text" /> <input
name="sub" type="submit" value="Subscribe" /></td></tr></tbody></table></form></div><p><br/></p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/releases/prettyfaces-v123_rc1-released/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Java Server Faces 2.0 is in Good Hands</title><link>http://ocpsoft.com/java/jsf2-in-good-hands/</link> <comments>http://ocpsoft.com/java/jsf2-in-good-hands/#comments</comments> <pubDate>Tue, 10 Feb 2009 23:44:39 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[JSF]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[JSF 2.0]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[PrettyFaces]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=41</guid> <description><![CDATA[&#8220;The community was speaking, but until recently, nobody was listening.&#8221; A lot has changed since May 15, 2001, when the first ballot review of the JSF 1.0 framework was just beginning. To this day, Sun&#8217;s flagship web-application framwork has been an uncompromising box of tricks and gotchas, with little community adoption. This has been mostly [...]]]></description> <content:encoded><![CDATA[<blockquote><h2 style="text-align: center;">&#8220;The community was speaking, but until recently, nobody was listening.&#8221;</h2></blockquote><p>A lot has changed since May 15, 2001, when the first ballot review of the JSF 1.0 framework was just beginning. To this day, Sun&#8217;s flagship web-application framwork has been an uncompromising box of tricks and gotchas, with little community adoption. This has been mostly due to its relatively developer-unfriendly nature; however, the second phase is coming, and with JSF2.0 peeking out from the edge of its nest, a new life is beginning to show.</p><p><span
id="more-41"></span></p><p>From the start, JSF had mixed support from the community, with opposition from major players like IBM, HP, and the Apache Foundation. Apache voiced strong concerns because of &#8220;Sun&#8217;s current position that JSRs may not be independently implemented under an open source license.&#8221; In addition, they saw, &#8220;little value in recreating a technology [Struts] in a closed environment that is already available in an open environment.&#8221;<a
name="sdfootnote1anc" href="#sdfootnote1sym"><sup>1</sup></a></p><p>Apache&#8217;s concerns drew several other players to vote against JSF, but the final vote still passed with a 10-5 margin (Accenture abstained from voting.) With the voting complete a short two weeks later, the first JSF expert group was formed.</p><p>Three months after the formation of the expert group, the first JCP community review was complete, and Sun&#8217;s new star web-framework was on its way to reality. On the side of the box was a label, which read, &#8220;Final release, May 2004: Warranty Void if Removed&#8221; It was done, and their hands were off.</p><blockquote><h2 style="text-align: center;">But <em>some things that should not have been forgotten, were lost.</em></h2></blockquote><p>Since JSF was engineered by companies like IBM and Oracle, major contractors in the industry, most of the emphasis was placed on creating a modular architecture that could be &#8216;easily extended&#8217; and broken down into components. While technically sound, and well designed for large companies where developers are part of an assembly line, the community at large found JSF hard to use.</p><p>JSF lacked life-cycle extension; there are six defined phases, and if you need to add another one, you&#8217;re out of luck. Also lacking was easy component creation &#8212; Creating a component in JSF today requires modification of no fewer than four separate files, even more if you use a separate renderer class. You were on your own if you wanted to validate multiple form fields against each other.</p><p>Navigation rules were ungainly, and difficult to follow logically without a visual editor. Community documentation was almost a joke. Sun&#8217;s mailing list and <a
href="http://forums.sun.com/forum.jspa?forumID=427&amp;start=0">forum</a> are still the best places to find help. There are some very knowledgeable people, but nowhere to be found is what most developers find most useful: a central, persistent resource for documentation. I like <a
href="http://www.php.net/manual/en/control-structures.foreach.php">PHP&#8217;s model</a> &#8211; official documentation with community feedback in comments below.</p><p>The lack of bookmarking support is one of the most highly-criticised facets of JSF, which is where I got involved, leading me to create the <a
href="../../../../../prettyfaces">PrettyFaces</a> URL rewriting extension. If you need to be convinced of the collective dysfunction on this topic, look at the results of a google search for &#8220;jsf bookmark&#8221;. Yet, at the root of all this was something JSF lacked until very recently &#8211; something very important.</p><blockquote><h2 style="text-align: center;"><em>A set of ears.</em></h2></blockquote><p
align="left">The community was speaking, but until recently, nobody was listening. Blame JCP? Cay Horstmann thinks that <a
href="http://weblogs.java.net/blog/cayhorstmann/archive/2009/01/a_call_to_fix_t.html">the JCP needs to be more open</a> to the community.<a
name="sdfootnote2anc" href="#sdfootnote2sym"><sup>2</sup></a></p><p
align="left">Personally, I&#8217;m surprised that JSF wasn&#8217;t abandoned completely, which says in my mind, &#8220;they got something right.&#8221; The framework does a lot for you, but &#8220;I can&#8217;t figure out how to use it&#8221;, &#8220;it doesn&#8217;t do what I need,&#8221; and &#8220;everything takes forever.&#8221;. This is where we see the light, and JSF2 enters from stage left; a new star performer?</p><p
align="left">From the very start, JSF2 is different, more open. Ed Burns, Ryan Lubke, Jim Driskoll and other <a
href="http://weblogs.java.net/">blogging developers</a> can be thanked for engaging the community in a way that Sun has not done before.</p><p
align="left">Convention over configuration has taught us a lot. We might thank Ruby on Rails, or possibly a collective laziness, but the <a
href="http://jcp.org/en/jsr/detail?id=314">JSR314</a> Expert Group has taken it to heart. &#8220;EzComp&#8221; is JSF&#8217;s new component writing system, and yes, it&#8217;s &#8220;Ez&#8221;.</p><p
align="left">Jim Driscoll <a
href="http://weblogs.java.net/blog/driscoll/archive/2008/11/another_jsf_20_1.html">explains</a> how to create a &#8220;click to edit&#8221; AJAX input field, like those so popularly seen on Flickr, or Facebook. (About 30 lines of XHTML, plus JavaScript.) Tag libraries no longer need to be defined manually; they will <a
href="http://weblogs.java.net/blog/driscoll/archive/2008/11/writing_a_simpl_1.html">spring to life</a> as needed, based on the names and interfaces of your components.</p><p
align="left">JSF2 is showing stunning promise and vision. This is just a small set of changes that will drastically improve the usefulness and adoption of JSF. When a rookie Java web-developer can pick up JSF2.0, in their IDE of choice, and write a small, useful application in a day, that&#8217;s when we&#8217;ll know they&#8217;ve gotten it right. Man, life is good&#8230; but.</p><blockquote><h2 style="text-align: center;"><em>Where are my bookmarks?</em></h2></blockquote><p
align="left">Ahh yes.</p><p
align="left">After learning about JSF2 in mid-October, I&#8217;ve been following very closely the changes and discussions around its new architecture, and how it can be &#8216;fixed.&#8217; At the top of <a
href="http://www.jsfcentral.com/editorial/jsf2_wishlist_1.html">the wish list</a>, among other contenders like &#8220;Fixing Navigation Rules,&#8221; and even above &#8220;Simplified component development,&#8221; is one very near to my heart: &#8220;Enhanced support for GET requests.&#8221;</p><p
align="left">I began work on <a
href="../../../../../prettyfaces">PrettyFaces</a> before learning that JSF2 was in progress, but not before I had evaluated the other options available from the community. Jboss Seam had a UrlRewriting feature, but I found it cumbersome, requiring too much configuration, and the added burden of learning the entire Seam framework was too much for me. RestFaces was an alternative that I tried for a while, but several design choices made it difficult to incorporate in a non-invasive way, and I was left writing lines and lines of code in order to compensate for its (albeit few) shortcomings.</p><p
align="left">Shocked, disappointment struck when I was contacted by a PrettyFaces user, disheartened, who urged me to contact the JSF2 expert group because they were <a
href="http://forums.sun.com/thread.jspa?messageID=10541909#10541909">close to abandoning</a> bookmarking support for the next release, a full five years after the last specification update. How could they be considering omitting such a critical feature? It would surely finish off whatever damage had been done by the first 8 years of JSF&#8217;s mis-managed life, and it would be dead forever. &#8220;Long live Struts,&#8221; Apache would tout.</p><blockquote><h2 style="text-align: center;"><em>New life.</em></h2></blockquote><p
align="left">But fate struck, and before I could even begin to write emails, begging for reconsideration, I got another pop-up from my inbox.</p><p
align="left">From: Dan J. Allen &#8211; Jan 10, 2:50pm</p><p
style="padding-left: 30px; text-align: justify;"><tt>Lincoln,</tt></p><p
style="padding-left: 30px; text-align: justify;"><tt>Hey there. I have recently joined the JSF EG by way of my employment with Red Hat. My first action was to submit a couple of proposals to make JSF more "website friendly". After all, that is what got me interested in Seam in the first place.</tt></p><p
style="padding-left: 30px; text-align: justify;"><tt>In the most recent proposal, I cited the statements you made in a recent blog post. I have attached that proposal to this e-mail as well as a related proposal. We are listening (at least those of us at Red Hat) and we are trying our best to improve JSF within the boundaries that we have to work (i.e., the JCP). The JSF EG was definitely dysfunctional in the past, but Ed Burns, Red Hat, and a handful of other members have really started to turn things around. Adding pretty URLs is definitely too big of a change at this point given the time constraints, but you may find these two proposals to satisfy many of your other concerns. Feel free to provide feedback to the JSF EG regarding the design changes.</tt></p><p
style="padding-left: 30px; text-align: justify;"><tt>-Dan</tt></p><p
align="left">Dan is the author of <a
href="http://www.manning.com/dallen/">Seam in Action</a>, and from my interactions with him, a brilliant individual. If he isn&#8217;t rich already, in heart or on paper, he will be someday.</p><p
align="left">Struck by two emails on this subject in the same day, I &#8220;hurriedly&#8221; (from 11pm-2am) typed a response. Someone at RedHat was asking <em>me</em> for <em>my feedback?</em> Talk about an ego trip. My friends at work won&#8217;t let me hear the end of it.</p><p
align="left">The proposal was stunning. While still omitting Pretty URL rewriting, it contained in depth solutions for using query-string parameters (http://url?key=value) to bookmark pages within JSF. It lacked page-load actions, but that would follow, as we talked through the issues, in the next few days.</p><p
align="left">During the process of reviewing Dan&#8217;s proposals, providing feedback where I could, and wishing I weren&#8217;t just a part-time contributor, we worked through issues regarding usability, convention over configuration, and strategies for implementing the new functionality that would be required. Two weeks and 91 emails later, we had a draft of the spec, and off it went (via Pete Muir at RedHat) to the Expert Group for review.</p><p
align="left">The proposal was accepted; Dan&#8217;s job got even better. Within a week, he would have to implement his proposed specification, create a sample application, make any necessary changes to the spec, submit it back to the EG, and believe me, it was good.</p><blockquote><h2 style="text-align: center;"><em>Things yet to come.</em></h2></blockquote><p
align="left">JSF2 is still under review, and all of these changes may yet be changed, but I&#8217;m confident that the people in charge have heads on their shoulders, and that they are pointing in the right direction.</p><p
align="left">I&#8217;m impressed. Impressed by Dan Allen, Jim Driscoll, Ryan Lubke, and by Sun for starting to recognize that its developer community is its best chance at survival. JSF2 won&#8217;t have everything that we&#8217;ve asked for, but it will have the most critical features that the community has asked for. I&#8217;m impressed that it&#8217;s turning out so well: Component writing is truly easy; pages will be bookmark-able; templating is built in; and annotations are on the way to deprecating faces-config.xml for trivial tasks.</p><p
align="left">So what can Sun do next? Well. For starters, keep listening. Don&#8217;t limit ideas to people on its payroll. JSF2 will be a success if Sun gives users a voice.</p><p
align="left">The developer blogs are great, but we need a centralized place for core documentation. The site needs to be fast, and you should be able to easily register and contribute. Yes, it will take management and oversight, but we aren&#8217;t out to hurt anyone. Dear sun: &#8220;We like what you&#8217;re doing, and the direction in which we think you might be turning. We&#8217;re here to further the cause of software development, and guess what&#8230; If you listen to us&#8230; we&#8217;ll do it for free.&#8221;</p><p
align="left">Whether or not this happens, the future of JSF is in our hands.</p><p
style="text-align: center;">&#8211;</p><p><a
name="sdfootnote1sym" href="#sdfootnote1anc">1</a><a
href="http://www.jcp.org/en/jsr/results?id=614" target="_blank">http://www.jcp.org/en/jsr/results?id=614</a></p><p><a
name="sdfootnote2sym" href="#sdfootnote2anc">2</a><a
href="http://weblogs.java.net/blog/cayhorstmann/archive/2009/01/a_call_to_fix_t.html" target="_blank">http://weblogs.java.net/blog/cayhorstmann/archive/2009/01/a_call_to_fix_t.html</a></p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/java/jsf2-in-good-hands/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>PrettyFaces 1.1.0 Released</title><link>http://ocpsoft.com/opensource/prettyfaces-110-released/</link> <comments>http://ocpsoft.com/opensource/prettyfaces-110-released/#comments</comments> <pubDate>Tue, 09 Dec 2008 00:00:59 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[JSF]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[PrettyFaces]]></category> <category><![CDATA[Releases]]></category> <category><![CDATA[Java]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=30</guid> <description><![CDATA[A new release of the PrettyFaces JSF extension for Bookmarkable/Pretty URLs is now availible for download. This release includes several new features. Enhanced internal navigation/redirects. Returning “pretty:” from a JSF action method, or Pretty action method will cause a redirect to the current page. Effectively a refresh. Added the &#60;pretty:link&#62; component. Added attribute to Pretty [...]]]></description> <content:encoded><![CDATA[<p>A new release of the <a
href="http://ocpsoft.com/prettyfaces" target="_self">PrettyFaces</a> JSF extension for Bookmarkable/Pretty URLs is now availible for download. This release includes several new features.<br/><br
/> <span
id="more-30"></span></p><ul><li>Enhanced internal navigation/redirects. Returning “pretty:” from a JSF action method, or Pretty action method will cause a redirect to the current page. Effectively a refresh.</li><li>Added the &lt;pretty:link&gt; component.</li><li>Added attribute to Pretty action method configuration, allowing targeting of action methods to specific JSF phases in the lifecycle.</li></ul><p>View the documentation here, for <a
href="http://ocpsoft.com/prettyfaces#configuration" target="_self">PrettyFaces</a>.</p><p
style="text-align: center;">&#8212;-</p><p>PrettyFaces is an OpenSource JSF extension which enables creation of bookmarkable, pretty URLs made easy. Our goal was to solve this problem as simply as possible, while still enabling a useful set of functions such as: page-load actions, integration with faces navigation, dynamic view-id assignment, and managed parameter parsing. All of this without introducing unnecessary coupling.<br
/> <a
name="mailinglist"></a></p><table
style="padding: 5px;" border="0" cellspacing="0"><tbody><tr><td
style="padding-left: 5px"><strong>Subscribe to prettyfaces-users</strong></td></tr><form
action="http://groups.google.com/group/prettyfaces-users/boxsubscribe"><tr><td
style="padding-left: 5px;">Email:</p> <input
name="email" type="text" /> <input
name="sub" type="submit" value="Subscribe" /></td></tr></form><tr><td
align="right"><a
href="http://groups.google.com/group/prettyfaces-users">Visit this group</a></td></tr></tbody></table> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/opensource/prettyfaces-110-released/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Ajax4Jsf &lt;a4j:form data=&#8221;broken!&#8221;&gt;</title><link>http://ocpsoft.com/opensource/ajax4jsf-a4jform-databroken/</link> <comments>http://ocpsoft.com/opensource/ajax4jsf-a4jform-databroken/#comments</comments> <pubDate>Mon, 25 Aug 2008 05:31:50 +0000</pubDate> <dc:creator>Lincoln</dc:creator> <category><![CDATA[JSF]]></category> <category><![CDATA[OpenSource]]></category> <category><![CDATA[Ajax4Jsf]]></category> <category><![CDATA[Java]]></category><guid
isPermaLink="false">http://ocpsoft.com/?p=9</guid> <description><![CDATA[A4J:Form is missing several specified ajax functions (View this issue on the JBoss tracker here. Keep reading, there is a fix&#8230; download fix) The issue: When using the a4j:form component, the data=&#8221;#{managedBean.property}&#8221; the properties defined in the data element list are supposed to be available after the a4j event in the data JavaScript variable; however, [...]]]></description> <content:encoded><![CDATA[<h2>A4J:Form is missing several specified ajax functions</h2><p>(<em>View this issue on the JBoss tracker <a
href="https://jira.jboss.org/jira/browse/AJSF-141" target="_blank">here</a>. Keep reading, there is a fix&#8230;<a
href="https://jira.jboss.org/jira/secure/attachment/12321714/UIAjaxForm.java"> download fix</a></em>)</p><h3>The issue:</h3><p>When using the a4j:form component, the <em>data=&#8221;#{managedBean.property}&#8221;</em> the properties defined in the <em>data</em> element list are supposed to be available after the a4j event in the <em>data</em> JavaScript variable; however, with &lt;a4j:form&gt; the attribute is not correctly causing the JavaScript <em>data</em> variable to be populated.<br
/> <span
id="more-9"></span><br
/> The <em>data</em> variable is always undefined, even if the managed bean property is set to a valid value. This is exhibited by the alert box as the value is displayed, &#8220;(undefined)&#8221;.</p><h4>Example:</h4><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;">&nbsp;</pre></div></div><p
style="text-align: center;">&#8212;-</p><h3>The workaround:</h3><p>Taking a look at the source code revealed that the &lt;a4j:form&gt; was not in fact including this behavior at all in the <em>broadcast()</em> method, which is where the <em>data</em> element processing occurs in the &lt;a4j:commandButton&gt;.</p><h4>UIAjaxForm.broadcast()</h4><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">    <span style="color: #666666; font-style: italic;">/* (non-Javadoc)
     * @see javax.faces.component.UIComponentBase#broadcast(javax.faces.event.FacesEvent)
     */</span>
     <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> broadcast<span style="color: #009900;">&#40;</span>FacesEvent event<span style="color: #009900;">&#41;</span>
               <span style="color: #000000; font-weight: bold;">throws</span> AbortProcessingException <span style="color: #009900;">&#123;</span>
          <span style="color: #666666; font-style: italic;">// perform default</span>
          <span style="color: #000000; font-weight: bold;">super</span> .<span style="color: #006633;">broadcast</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event <span style="color: #000000; font-weight: bold;">instanceof</span>  AjaxEvent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
               <span style="color: #666666; font-style: italic;">// complete re-Render fields. AjaxEvent deliver before render response.</span>
               setupReRender<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
     <span style="color: #009900;">&#125;</span></pre></div></div><p
style="text-align: center;">&#8212;-</p><p>In fact, however, if we modify the &lt;a4j:form&gt; <em>broadcast()</em> method to behave like its &lt;a4j:commandButton&gt; relative, we can still achieve this functionality!</p><h4>Updated: UIAjaxForm.broadcast()</h4><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> broadcast<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> FacesEvent event<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> AbortProcessingException
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">broadcast</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event <span style="color: #000000; font-weight: bold;">instanceof</span> AjaxEvent<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setupReRender</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003399;">Object</span> data <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getData</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            AjaxContext ajaxContext <span style="color: #339933;">=</span> AjaxContext.<span style="color: #006633;">getCurrentInstance</span><span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">!=</span> data<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                ajaxContext.<span style="color: #006633;">setResponseData</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #003399;">String</span> focus <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getFocus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">!=</span> focus<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                UIComponent focusComponent <span style="color: #339933;">=</span> RendererUtils.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">findComponentFor</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, focus<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">!=</span> focusComponent<span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                    focus <span style="color: #339933;">=</span> focusComponent.<span style="color: #006633;">getClientId</span><span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                ajaxContext.<span style="color: #006633;">getResponseDataMap</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>AjaxActionComponent.<span style="color: #006633;">FOCUS_DATA_ID</span>, focus<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            ajaxContext.<span style="color: #006633;">setOncomplete</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getOncomplete</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div><p
style="text-align: center;">&#8212;-</p><p>We&#8217;re set!</p><p>I don&#8217;t particularly like to repeat this code, so I may get around to refactoring everything and submitting it back to the Ajax4JSF project. For now, though, this blog will have to do.</p><p>I believe other functionality that was also broken included both the <em>focus=&#8221;elementId&#8221;</em> and the <em>oncomplete=&#8221;javascriptCode&#8221;</em>.</p><p>As always, please feel free to improve and comment on this. Enjoy!</p> ]]></content:encoded> <wfw:commentRss>http://ocpsoft.com/opensource/ajax4jsf-a4jform-databroken/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: ocpsoft.com @ 2010-07-29 17:18:08 by W3 Total Cache -->