Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Weekend Update

Yikes! I can't believe it's been a whole week since I last blogged. Actually, with my workload it's not that surprising. Don't let anyone ever tell you that working for an open source consulting and support company is easy. When we started, we dreamed of working a couple of weeks a month, and working on open source the rest of the time. Business has really started to pick up in 2006, so that dream is quickly fading. Regardless, this week was a good one.

I managed to get Equinox upgraded to Tapestry 4.0 and WebWork 2.2. Both of these releases are much nicer than their predecessors and I plan to do a write-up next week. I especially dig how WebWork 2.2 allows you to do a popup calendar with less code than both JSF or Tapestry. It really is a kick-ass web framework and only getting better.

Virtuas Other than that, I had some fun with Maven 2 - converting all the Spring Fundamentals labs to use it. The invalid-POM situation continues to be atrocious and shows no sign of improving soon. I really like the idea of the Jetty 6 Maven Plugin, but unfortunately, it doesn't seem to play nice with SiteMesh. Lastly, I had some fun getting JOTM to work on Tomcat 5.5.x. All in all, I learned a lot this week, just didn't have much time to write about it.

AppFuseIn AppFuse News, Mika Göckel wrote tutorial on integrating XFire with AppFuse. Mika also authored a tutorial on AppFuse + Axis. He obviously knows his way around AppFuse - so we nominated and accepted him as a committer. Welcome aboard Mika! Finally, Brian Topping has converted a version of AppFuse to Maven 2. With any luck, AppFuse will be an archetype that you can install from Maven someday.

I'm flying out to San Francisco for a 1-day seminar next week and my MacBook Pro couldn't arrive any sooner (12 days and counting).

Posted in Java at Feb 11 2006, 06:22:03 PM MST 5 Comments

Less than: <span jwcid="@DatePicker" value="ognl:dateProperty"/> ?

Posted by Howard M. Lewis Ship on February 11, 2006 at 11:14 PM MST #

Let's try that again. Less than: <input jwcid="@DatePicker" date="ognl:dateProperty"/> ?

Posted by Howard M. Lewis Ship on February 11, 2006 at 11:15 PM MST #


<input jwcid="@DatePicker" format="message:date.format" type="text"
    size="11" value="ognl:user.birthday" id="birthday"


<t:inputCalendar monthYearRowClass="yearMonthHeader"
    weekRowClass="weekHeader" id="birthday"
    currentDayCellClass="currentDayCell" value="#{userForm.user.birthday}"
    renderAsPopup="true" addResources="false"/>


<ww:datepicker label="%{getText('user.birthday')}" name="user.birthday"

With Tapestry, I'm guessing that "format" is not recognized anymore. Also, I couldn't out how to format the date in WebWork. It'd be nice if every framework allowed setting the date format as a global property - or something read from a resource bundle.

I don't mean anything against Tapestry Howard. I think it's an awesome framework, but it'd be a lot nicer if you didn't need to extend classes and listener methods didn't require a RequestCycle. Testing WebWork and JSF Actions/Beans are quite easy b/c their methods take no arguments. It's funny how I can use the same JUnit test to test a WebWork Action or a JSF Bean.

Furthermore, both JSF and WebWork support Spring w/o any extra work. Tapestry makes you write Java code to make it work. That's not exactly "built-in" support, is it? ;-)

Posted by Matt Raible on February 11, 2006 at 11:35 PM MST #

Best practice in WebWork for formatting dates is to use the i18n support and define your text as a M essageFormat string (see MessageFormat for how they look), then do a getText() and pass the Date property as a parameter to be plugged into the MessageFormat.

Posted by Jason Carreira on February 12, 2006 at 10:53 AM MST #

Other topic... There is a typo on should be It makes the demo run correctly once, then you got naming exceptions... funny (grrrr)

Posted by ati on February 13, 2006 at 07:42 AM MST #

Post a Comment:
  • HTML Syntax: Allowed