<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>JSF One</title>
    <link>http://www.jsfone.com</link>
    <description>JSF One</description>
    <item>
      <title>JSF 2.0 and the upcoming GA release of JSFUnit</title>
      <link>http://www.jsfone.com/blog/stan_silvert/2009/01/jsf_2_0_and_the_upcoming_ga_release_of_jsfunit.html</link>
      <description>I don't work on JSFUnit full time.  A big part of my responsibility at JBoss/Red Hat is to make sure that JSF and Seam integrate nicely with the JBoss Application Server.&lt;br /&gt;&lt;br /&gt;So I've been looking at the &lt;a href="https://javaserverfaces.dev.java.net/nonav/rlnotes/2.0.0/index.html"&gt;JSF 2.0 Public Review release&lt;/a&gt;.  Using JSF 2.0 with JBoss AS 4.2 and AS 5.0 seems to be just a matter of replacing jsf-api.jar and jsf-impl.jar.  I'm sure that I'll come across some things that need more/better integration.  And when I do, I'll have to implement something new.  But for now I'm happy to be able to play with the JSF 2.0 PR release as-is on JBoss AS.&lt;br /&gt;&lt;br /&gt;To see how much would run without error, I decided to go ahead and upgrade JSFUnit to work with the new JSF 2.0 API.  That required adding methods to JSFUnitFacesContext and JSFUnitExternalContext.  There were some other code changes, including a change to the Environment class that detects which version of JSF is running. &lt;br /&gt;&lt;br /&gt;Anyhow, I'm happy to report that JSFUnit now works with JSF 2.0.  You can download the &lt;a href="http://snapshots.jboss.org/maven2/org/jboss/jsfunit/"&gt;latest JSFUnit snapshot&lt;/a&gt; if you'd like to play with it.  The part of the JSFUnit test suite that doesn't run is execution of the applications that use Facelets and Ajax4Jsf/RichFaces together.  I've filed a bug on it, so hopefully that problem will be resolved soon.  Please leave me feedback on the &lt;a href="http://www.jboss.com/index.html?module=bb&amp;amp;op=viewforum&amp;amp;f=269"&gt;JSFUnit Forum&lt;/a&gt; if you decide to give it a try.&lt;br /&gt;&lt;br /&gt;Lastly, I've been asked several times when JSFUnit is going to go GA.  There is really nothing stopping me now except that I'd like to fix a few more bugs and maybe add support for IceFaces.  Look for a release in mid-February.&lt;br /&gt;&lt;br /&gt;So long and thanks for all the fish,&lt;br /&gt;&lt;br /&gt;Stan</description>
      <pubDate>Mon, 05 Jan 2009 14:08:00 CST</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-5643789161706320234.post-8771166751940950876</guid>
      <dc:creator>Stan Silvert</dc:creator>
    </item>
    <item>
      <title>My Thoughts on AT&amp;#038;T U-verse</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2009/01/my_thoughts_on_at_038_t_u_verse.html</link>
      <description />
      <pubDate>Mon, 05 Jan 2009 10:00:21 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=188</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>JSFDays*09, Vienna, Austria</title>
      <link>http://www.jsfone.com/blog/max_katz/2009/01/jsfdays_09_vienna_austria.html</link>
      <description>&lt;p&gt;&lt;a href="http://www.jsfdays.com"&gt;JSFDays*09&lt;/a&gt; will be held for the second year in beautiful Vienna, Austria on April 1-3, 2009. The conference is full of JSF superstars: Ed Burns, Matthias Wessendorf, Martin Marinschek, Cagatay Civici, Kito Mann, Pete Muir, Pourya Harirbafan  and many more. It&amp;#8217;s going to be a great conference. &lt;/p&gt;
&lt;p&gt;I have two sessions and a full day RichFaces workshop. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;April 1st, 2009&lt;br /&gt;
Building RIA applications with JBoss RichFaces&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;April 2nd, 2009&lt;br /&gt;
Buillding RIA applications with JavaFX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;April 3rd, 2009&lt;br /&gt;
Full  day, hands-on RichFaces workshop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want to quickly learn RichFaces, definitely attend the full day workshop.&lt;/p&gt;</description>
      <pubDate>Fri, 02 Jan 2009 10:53:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=199</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Keeping rich:panelMenu state</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/keeping_rich_panelmenu_state.html</link>
      <description>&lt;p&gt;This example is in response to &lt;a href="http://www.seamframework.org/Community/HowToKeepComponentStateOnPageRichpanelMenu" target="new"&gt;this&lt;/a&gt; post. &lt;/p&gt;
&lt;p&gt;The solution uses two managed beans, one in request and one in session scope. The session bean will keep the menu state. You can easily extend this example to use Seam. I need to remember two things. First is which group was opened/closed and second which item inside the group was clicked. Remembering which item inside the group was clicked is done via selectedChild=&amp;#8221;#{menuState.selectedMenuItem}&amp;#8221;. Remembering which group was opened is done via value attribute on each group. The value is saved automatically. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m setting action=&amp;#8221;page.xhtml&amp;#8221; because I&amp;#8217;m using a &lt;a href="http://mkblog.exadel.com/?p=195"&gt;custom navigation handler&lt;/a&gt;. Standard navigation rules will work the same way. &lt;/p&gt;
&lt;p&gt;start.xhtml:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h:form&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenu&lt;/span&gt; &lt;span style="color: #000066;"&gt;style&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;width:200px&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;client&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;selectedChild&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuState.selectedMenuItem}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconExpandedGroup&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;disc&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconCollapsedGroup&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;disc&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconExpandedTopGroup&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;chevronUp&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconGroupTopPosition&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;right&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconCollapsedTopGroup&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;chevronDown&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;  &lt;span style="color: #000066;"&gt;iconCollapsedTopPosition&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;right&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuGroup&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Group 1&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group1&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;                &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuState.menu['group1']}&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 1&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group1_item1&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 2&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group1_item2&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 3&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group1_item3&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/rich:panelMenuGroup&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuGroup&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Group 2&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group2&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;               &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuState.menu['group2']}&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
       &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 1&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group2_item1&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 2&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group2_item2&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;rich:panelMenuItem&lt;/span&gt; &lt;span style="color: #000066;"&gt;label&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Item 3&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;group2_item3&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;actionListener&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{menuBean.select}&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/select.xhtml&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;		&lt;span style="color: #000066;"&gt;mode&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/rich:panelMenuGroup&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/rich:panelMenu&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h:form&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;MenuBean managed bean (in request scope):&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java java" style="font-family:monospace;"&gt;&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; &lt;span style="color: #006699;"&gt;test&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;javax.faces.event.ActionEvent&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MenuBean &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; MenuState menuState;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; MenuState getMenuState&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; menuState;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;void&lt;/span&gt; setMenuState&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;MenuState menuState&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006633;"&gt;menuState&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; menuState;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; MenuBean&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;void&lt;/span&gt; select &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003399;"&gt;ActionEvent&lt;/span&gt; event&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	menuState.&lt;span style="color: #006633;"&gt;setSelectedMenuItem&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;event.&lt;span style="color: #006633;"&gt;getComponent&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006633;"&gt;getId&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In select listener, we are remembering which rich:panelMenuItem was clicked. When we come back to the page, the clicked item will be italicized via selectedChild=&amp;#8221;#{menuState.selectedMenuItem}&amp;#8221;. &lt;/p&gt;
&lt;p&gt;MenuState bean (in session scope) keeps the menu state.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; &lt;span style="color: #006699;"&gt;test&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;java.util.HashMap&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;java.util.Map&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;javax.annotation.PostConstruct&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MenuState &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #003399;"&gt;Map&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;String, Boolean&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; menu;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; selectedMenuItem;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; getSelectedMenuItem&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; selectedMenuItem;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; Map&lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;String, Boolean&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; getMenu&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; menu;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;	
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;void&lt;/span&gt; setMenu&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Map&lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;String, Boolean&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; menu&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006633;"&gt;menu&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; menu;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;void&lt;/span&gt; setSelectedMenuItem&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003399;"&gt;String&lt;/span&gt; selectedMenuItem&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	&lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006633;"&gt;selectedMenuItem&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; selectedMenuItem;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; MenuState&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
   @PostConstruct
   &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;void&lt;/span&gt; init &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
	menu &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: #003399;"&gt;HashMap&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;String, Boolean&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;;
	menu.&lt;span style="color: #006633;"&gt;put&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;group1&amp;quot;&lt;/span&gt;, &lt;span style="color: #000066; font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;;
	menu.&lt;span style="color: #006633;"&gt;put&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;group2&amp;quot;&lt;/span&gt;, &lt;span style="color: #000066; font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;rich:panelMenuGroup value attribute is bound to the menu HashMap and is saved automatically. &lt;/p&gt;
&lt;p&gt;JSF configuration file:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml xml" style="font-family:monospace;"&gt; &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;menuBean&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;test.MenuBean&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-scope&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;request&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-scope&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-property&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;property-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;menuState&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/property-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;property-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;test.MenuState&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/property-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;value&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;#{menuState}&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/value&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-property&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
 &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
 &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;menuState&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-name&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;test.MenuState&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-class&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;managed-bean-scope&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;session&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean-scope&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
 &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/managed-bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;select.xhtml is very simple:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;body&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h:form&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  	Go &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h:commandLink&lt;/span&gt; &lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/start.xhtml&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Back&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/h:form&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/body&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 31 Dec 2008 13:45:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=198</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>United 1K again</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/united_1k_again.html</link>
      <description>&lt;p&gt;I made it &lt;a href="http://flyerguide.com/wiki/index.php/Elite_Levels_(UA)" target="new"&gt;United 1K&lt;/a&gt; again. This means I flew more then 100,000 miles this year. I did have to do a number of &lt;a href="http://en.wikipedia.org/wiki/Mileage_run" target="new"&gt;mileage runs&lt;/a&gt; (I flew a little bit less as my daughter was born this year), but trust me it&amp;#8217;s worth it. Being an elite flyer, the travel experience is usually enjoyable compared to the horror stories you hear in the news. You get priority everything - checking in, boarding, seating.  You also get free upgrades. For example, when you fly to Europe (that&amp;#8217;s about 11+ hours from San Francisco) I have a good chance of being upgraded to Business class basically for free (after purchasing a regular economy ticket). To buy a Business class ticket would cost at least $5,000. &lt;/p&gt;
&lt;p&gt;If you fly a lot, it makes a lot of sense to fly the same airline.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Dec 2008 12:05:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=197</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Two articles in Top 10 on JavaLobby.com of 2008</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/two_articles_in_top_10_on_javalobby_com_of_2008.html</link>
      <description>&lt;p&gt;Two articles I wrote are in &lt;a href="http://java.dzone.com/articles/javalobbys-top-10-articles-200" target="new"&gt;JavaLobby&amp;#8217;s Top 10 Articles of 2008 by James Surgue&lt;/a&gt;. Thank you, it&amp;#8217;s nice to be in top ten. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/news/interview-john-de-goes-free-un"&gt;Interview: John De Goes Introduces a Newly Free Source Code Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/an-introduction-to-jboss-richf"&gt;An Introduction To JBoss RichFaces&lt;/a&gt; &lt;strong&gt;(by me)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/best-java-tools-you-never-knew"&gt;The Best Java Tools You Never Knew Existed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/using-jsf-and-flex-components-?mz=3006-jboss"&gt;Using JSF and Flex Components Together&lt;/a&gt; &lt;strong&gt;(by me)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/tips/ten-amazing-java-applications"&gt;Ten Amazing Java Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/looking-forward-jpa-20"&gt;Looking Forward to JPA 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/glassfish-and-tomcat-whats-the"&gt;Tomcat Today, GlassFish Tomorrow? &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/news/hibernate-best-choice"&gt;Is Hibernate the best choice?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://java.dzone.com/articles/google-android-tutorial"&gt;Google Android Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://java.dzone.com/tips/pathway-acegi-spring-security-"&gt;Pathway from ACEGI to Spring Security&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The placement is based on number of clicks the article received. If this article was published today my &lt;a href="http://java.dzone.com/articles/an-introduction-to-jboss-richf"&gt;An Introduction To JBoss RichFaces&lt;/a&gt; article would take first place as it has 42,012 clicks while &lt;a href="http://java.dzone.com/news/interview-john-de-goes-free-un"&gt;Interview: John De Goes Introduces a Newly Free Source Code Editor&lt;/a&gt; has 41, 380. Oh well, next year :).  &lt;/p&gt;
&lt;p&gt;Early next year an article on how to use RichFaces with Spring will be published.&lt;/p&gt;</description>
      <pubDate>Mon, 29 Dec 2008 17:55:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=196</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>JSF 2 Gets Declarative Event Handling</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/jsf_2_gets_declarative_event_handling_1.html</link>
      <description />
      <pubDate>Mon, 29 Dec 2008 08:11:00 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=178</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>JSF 2 Gets Declarative Event Handling</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/jsf_2_gets_declarative_event_handling.html</link>
      <description />
      <pubDate>Tue, 23 Dec 2008 16:38:15 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=178</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>XML-less JSF Navigation</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/xml_less_jsf_navigation.html</link>
      <description>&lt;p&gt;&lt;a href="cagataycivici"&gt;Cagatay Civici&lt;/a&gt; posted a very neat example of using &lt;a href="http://cagataycivici.wordpress.com/2008/11/13/xml-less-jsf-navigations/"&gt;JSF navigation without XML &lt;/a&gt;(without defining navigation rules in JSF configuration file). I simplified the custom navigation handler even further. It is safe to assume that most people today use Facelets (I do in all my projects and trainings, plus it&amp;#8217;s going to be used in JSF 2.0), so we don&amp;#8217;t have to check the javax.faces.DEFAULT_SUFFIX context param. So, instead of using:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; navigate &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;somepage&amp;quot;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;it&amp;#8217;s now possible to use this:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; navigate &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;/somepage.xhtml&amp;quot;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;


&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h:commandButton&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Submit&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{bean.navigation}&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;or even like this if there is no action:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;h:commandButton&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Submit&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;action&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/somepage.xhtml&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;getTargetViewId method now looks like this:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; getTargetViewId&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;FacesContext facesContext, &lt;span style="color: #003399;"&gt;String&lt;/span&gt; outcome&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
   &lt;span style="color: #003399;"&gt;String&lt;/span&gt; targetViewId;
&amp;nbsp;
   &lt;span style="color: #000000; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;isRedirect&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;outcome&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
      targetViewId &lt;span style="color: #339933;"&gt;=&lt;/span&gt; outcome.&lt;span style="color: #006633;"&gt;split&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
      targetViewId &lt;span style="color: #339933;"&gt;=&lt;/span&gt; outcome;
   &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Thanks Cagatay for posting this!&lt;/p&gt;</description>
      <pubDate>Fri, 19 Dec 2008 13:32:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=195</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Practical RichFaces - available on Amazon</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/practical_richfaces__available_on_amazon.html</link>
      <description>&lt;p&gt;Practical RichFaces book hard copy is now available on &lt;a href="http://is.gd/cxbX" target="new"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 19 Dec 2008 10:47:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=194</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Changes Are Coming to the GlassFish Admin Console</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/changes_are_coming_to_the_glassfish_admin_console_1.html</link>
      <description />
      <pubDate>Tue, 16 Dec 2008 11:07:20 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=172</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Changes Are Coming To the GlassFish Admin Console</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/changes_are_coming_to_the_glassfish_admin_console.html</link>
      <description />
      <pubDate>Tue, 16 Dec 2008 10:51:09 CST</pubDate>
      <guid isPermaLink="true">http://blogs.sun.com/jasondlee/entry/changes_are_coming_to_the</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Interested in Servlet 3.0?</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/interested_in_servlet_3_0_.html</link>
      <description />
      <pubDate>Mon, 15 Dec 2008 14:20:15 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=164</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Answering questions at JavaRanch + free books</title>
      <link>http://www.jsfone.com/blog/emmanuel_bernard/2008/12/answering_questions_at_javaranch__free_books.html</link>
      <description />
      <pubDate>Wed, 10 Dec 2008 07:29:48 CST</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-2238439969300766358.post-2637888154328780239</guid>
      <dc:creator>Emmanuel Bernard</dc:creator>
    </item>
    <item>
      <title>Practical RichFaces - final PDF version uploaded</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/practical_richfaces__final_pdf_version_uploaded.html</link>
      <description>&lt;p&gt;If you downloaded a PDF copy of Practical RichFaces book before December, the publisher has uploaded the final version. &lt;a href="http://www.apress.com/book/view/1430210559" target="new"&gt;Download&lt;/a&gt; the new version. &lt;/p&gt;
&lt;p&gt;Hard copy will be available very soon as well I&amp;#8217;m told (1-3 weeks).&lt;/p&gt;</description>
      <pubDate>Tue, 09 Dec 2008 22:38:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=193</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>A One-Man JSF 2 Blog Storm</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/a_one_man_jsf_2_blog_storm.html</link>
      <description />
      <pubDate>Tue, 09 Dec 2008 09:47:19 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=163</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Seam, WebBeans and GlassFish</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/seam_webbeans_and_glassfish.html</link>
      <description />
      <pubDate>Mon, 08 Dec 2008 14:29:00 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/seam-webbeans-and-glassfish/</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>JBoss AS 5 is out, Hibernate Search 3.1, Devoxx is warming up and</title>
      <link>http://www.jsfone.com/blog/emmanuel_bernard/2008/12/jboss_as_5_is_out_hibernate_search_3_1_devoxx_is_warming_up_and.html</link>
      <description />
      <pubDate>Fri, 05 Dec 2008 07:51:04 CST</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-2238439969300766358.post-4363543033381991733</guid>
      <dc:creator>Emmanuel Bernard</dc:creator>
    </item>
    <item>
      <title>Practical RichFaces book - few free PDF copies left</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/practical_richfaces_book__few_free_pdf_copies_left.html</link>
      <description>&lt;p&gt;I&amp;#8217;ve got a few free PDF copies left of my &lt;a href="http://apress.com/book/view/9781430210559" target="new"&gt;Practical RichFaces &lt;/a&gt;book. Email me (max at exadel dot com) if you want one.&lt;/p&gt;</description>
      <pubDate>Thu, 04 Dec 2008 14:54:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=192</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Google Chrome - WebKit update ?</title>
      <link>http://www.jsfone.com/blog/matthias__wessendorf_/2008/12/google_chrome__webkit_update_.html</link>
      <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;Today I had to download Google Chrome, to work (verify) a bug. Same issue is present in Safari 3.2.1. Perhaps I should mention that both aren&amp;#8217;t using the latest greatest WebKit as its core&amp;#8230; So, I gave the nightly a shot&amp;#8230; The bug wasn&amp;#8217;t reproducibly with the nightly WebKit. Nice.&lt;/p&gt;
&lt;p&gt;Since there is a huge &lt;strong&gt;G&lt;/strong&gt; in Chrome&amp;#8230; folks want to see fixes in there. Kinda more pressure instead of fixing a &amp;#8220;Safari only&amp;#8221; bug &lt;img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;This all is fine, sure. But it is interesting that the Chrome browser uses an older WebKit than Safari 3.2.1&amp;#8230;&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s hope there is an update out soon, that bundles the G browser with the latest, greatest WebKit.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matthiaswessendorf.wordpress.com/171/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matthiaswessendorf.wordpress.com/171/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matthiaswessendorf.wordpress.com/171/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matthiaswessendorf.wordpress.com/171/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matthiaswessendorf.wordpress.com/171/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matthiaswessendorf.wordpress.com/171/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matthiaswessendorf.wordpress.com/171/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matthiaswessendorf.wordpress.com/171/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matthiaswessendorf.wordpress.com/171/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matthiaswessendorf.wordpress.com/171/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matthiaswessendorf.wordpress.com&amp;blog=1129660&amp;post=171&amp;subd=matthiaswessendorf&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 03 Dec 2008 13:29:00 CST</pubDate>
      <guid isPermaLink="true">http://matthiaswessendorf.wordpress.com/?p=171</guid>
      <dc:creator>Matthias  Wessendorf</dc:creator>
    </item>
    <item>
      <title>JavaFX - Rich Internet Applications with Java</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/javafx__rich_internet_applications_with_java.html</link>
      <description>&lt;p&gt;Tomorrow, December 4th, 2008 &lt;a href="http://www.javafx.com" target="new"&gt;JavaFX 1.0&lt;/a&gt; is going to be released. JavaFX is a new open source scripting language that runs inside the new, more lightweight, but still familiar, Java runtime environment.  &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m (mildly) excited. Excited - Java is a great technology for building web user interfaces, but it failed in a few areas in the &lt;a href="http://mkblog.exadel.com/?p=62"&gt;past&lt;/a&gt;. Mildly - JavaFX was announced at JavaOne 2007 but only now we are getting version 1.0. JavaFX has a long way to go before companies are using it to build real world RIA applications. Today the choice is still Flex or Silverlight. However, I do believe with the 1.0 release, companies will start playing with it. Enterprise tools for building RIA applications is shaping to be something like this:&lt;/p&gt;
&lt;p&gt;HTML/AJAX (pure browser)&lt;br /&gt;
Flash/Flex (browser + plug-in)&lt;br /&gt;
Silverlight (browser + plug-in)&lt;br /&gt;
JavaFX (browser + plug-in)&lt;/p&gt;
&lt;p&gt;Exadel already offers some basic JavaFX tooling for enterprise applications. With &lt;a href="http://exadel.com/web/portal/flamingo" target="new"&gt;Exadel Flamingo&lt;/a&gt; you can easily connect JavaFX with Seam or Spring back ends.&lt;/p&gt;</description>
      <pubDate>Wed, 03 Dec 2008 07:09:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=191</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>MyFaces 2.0 - A community driven JSF 2.0 implementation</title>
      <link>http://www.jsfone.com/blog/matthias__wessendorf_/2008/12/myfaces_2_0__a_community_driven_jsf_2_0_implementation.html</link>
      <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;It is pretty cool to see that there is lot&amp;#8217;s of activity on the JSF 2.0 implementation of the Apache MyFaces project. Lot&amp;#8217;s of folks contribute via the &lt;a href="https://issues.apache.org/jira/browse/MYFACES/component/12312453"&gt;JIRA issue tracker&lt;/a&gt; (filing bugs/tasks, submitting patches), or the mailing list.&lt;/p&gt;
&lt;p&gt;Really, a good community driven effort!&lt;/p&gt;
&lt;p&gt;Btw. it is still time to join. Just &lt;a href="http://myfaces.apache.org/mail-lists.html"&gt;subscribe&lt;/a&gt; to our &lt;a href="http://markmail.org/search/?q=%20list%3Aorg.apache.myfaces.dev"&gt;dev-mailing&lt;/a&gt; list &lt;img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matthiaswessendorf.wordpress.com/169/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matthiaswessendorf.wordpress.com/169/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matthiaswessendorf.wordpress.com/169/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matthiaswessendorf.wordpress.com/169/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matthiaswessendorf.wordpress.com/169/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matthiaswessendorf.wordpress.com/169/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matthiaswessendorf.wordpress.com/169/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matthiaswessendorf.wordpress.com/169/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matthiaswessendorf.wordpress.com/169/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matthiaswessendorf.wordpress.com/169/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matthiaswessendorf.wordpress.com&amp;blog=1129660&amp;post=169&amp;subd=matthiaswessendorf&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 03 Dec 2008 02:14:00 CST</pubDate>
      <guid isPermaLink="true">http://matthiaswessendorf.wordpress.com/?p=169</guid>
      <dc:creator>Matthias  Wessendorf</dc:creator>
    </item>
    <item>
      <title>JavaFX 1.0 Release Set for December 4</title>
      <link>http://www.jsfone.com/blog/jason_lee1/2008/12/javafx_1_0_release_set_for_december_4.html</link>
      <description />
      <pubDate>Tue, 02 Dec 2008 16:05:21 CST</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=161</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Rich editor is coming to RichFaces</title>
      <link>http://www.jsfone.com/blog/max_katz/2008/12/rich_editor_is_coming_to_richfaces.html</link>
      <description>&lt;p&gt;&lt;a href="http://www.jboss.org/community/docs/DOC-12943" target="new"&gt;rich:editor&lt;/a&gt; is one of the new components in RichFaces 3.3.0 (December 2008) . It&amp;#8217;s based on &lt;a href="http://tinymce.moxiecode.com/" target="new"&gt;tinyMCE&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 02 Dec 2008 12:40:00 CST</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=190</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
  </channel>
</rss>

