Thursday June 19, 2003
[ANNOUNCE] Commons EL 1.0 Released!
The Jakarta Commons Team is pleased to announce the first official release
of Commons EL from the Apache Software Foundation. Commons EL provides
an interpreter for the Expression Language that is part of the
JavaServer Pages(TM) specification, version 2.0.
For more details see the
release notes.
Source and
binary distributions
are available from the mirrors. Please remember to verify the signatures
of the distribution using the keys found on the
main apache site
when downloading from a mirror.
For more information on Commons EL, see the
EL
web site.
Hmmm, I wonder if this means we can add EL support to the display tag library without including JSTL? Posted in General at Jun 19 2003, 09:52:21 PM MDT 2 Comments
Using Struts' Declared Exceptions With a little prodding from Erik Hatcher today, I took another look at Struts' Declared Exceptions feature. At the end of last year, I was wishing I could use declared exceptions to do chained exceptions for my Action classes. Basically, in each of my Actions, I have a try/catch wrapped around a call to the Business Delegate (example: UserAction.java). You'll notice that all the CRUD methods have the same catch block for exception handling:
} catch (Exception e) {
e.printStackTrace();
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general"));
while (e != null) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("errors.detail", e.getMessage()));
e = (Exception) e.getCause();
}
saveErrors(request, errors);
return mapping.getInputForward();
}
After talking with Erik this morning, I decided to create an ActionExceptionHandler for java.lang.Exception. In my struts-config.xml, I added:
<exception type="java.lang.Exception" key="errors.general"
handler="org.appfuse.webapp.action.ActionExceptionHandler"/>
I have "errors.general=The process did not complete. Details should follow." Here is the code for ActionExceptionHandler:
public final class ActionExceptionHandler extends ExceptionHandler { public ActionForward execute(Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException { ActionForward forward = null; ActionError error = null; ActionErrors errors = new ActionErrors(); String property = null; // Build the forward from the exception mapping if it exists // or from the form input if (ae.getPath() != null) { forward = new ActionForward(ae.getPath()); } else { forward = mapping.getInputForward(); } ex.printStackTrace(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(error.getKey())); while (ex != null) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.detail", ex.getMessage())); ex = (Exception) ex.getCause(); } // Store the errors and exception request.setAttribute(Globals.ERROR_KEY, errors); return forward; } }
This allows me to remove my generic try/catches from my action classes - very slick IMO (or at least better than the code smell I had)! Of course, I still have some catch blocks that catch specific exceptions, but I can either (1) leave those intact, or (2) create another declared exception for that particular action/exception. I dig it and will be adding it (in short order) to AppFuse.
Update (June 23, 2003): Here's a more thoroughly tested code sample of this same class.
Posted in Java
at Jun 19 2003, 05:55:20 PM MDT
3 Comments
The Matrix at Red Rocks
This looks pretty cool - they're showing "The Matrix" at at Red Rocks. Not the new one, the old one - which I've been longing to see again ever since I saw Reloaded. For those of you not familiar with Red Rocks, it's an awesome natural ampitheater - and it's only minutes from my house (15 minutes on a bike). I just might have to go - looks like fun.
Posted in General
at Jun 19 2003, 04:57:33 PM MDT
Add a Comment
Sending POJOs to the UI instead of ActionForms I'm starting to think that my Struts-based apps could be simplified if I didn't convert POJOs to Action Forms when retrieving them from the database. By this, I mean to say that I'd like to retrieve and display POJOs on the UI, and then capture their information (as Action Forms) when saving the form. The reason I want to do this is because of Hibernate's Lazy Loading feature and formatting Dates. Basically, Hibernate allows you to load children of an object lazily (i.e. resumes of a User), when the getResumes() method is called. I've created [a page|POJOsToForms] on my wiki to explain further and continue this discussion. Of course, you can always leave comments here if you'd rather - they cross-reference each other. The [RollingWiki|http://www.rollerweblogger.org/wiki/Wiki.jsp?page=RollerWikiPlugin] rocks! Posted in Java at Jun 19 2003, 01:52:23 PM MDT 3 Comments
www.mail-archive.com
If you're doing development on an open source project, I recommend that you get your mailing list archived by mail-archive.com
. It's pretty easy to setup and offers a nice google-like search interface. I recently added struts-apps
, struts-menu-user
and the display tag
lists. I hope this makes it a lot easier for folks using these applications. I might even add Roller, but I figured Dave
could handle that if he really wants it (it's already being done by gname
anyway).
Either way, gname or mail-archive.com, if you're using a SourceForge mailing list, you'd better get a better archiving system b/c SourceForge's sucks! Why? No searching! What good is an archive without searching?!
Posted in Java at Jun 19 2003, 12:51:44 PM MDT 2 CommentsSearch This Site
Recent Entries
- A Good Friend becomes a DU Hockey Coach
- What's wrong with JSF
- Why such a busy week?
- New Passport in 9 Days
- EhCache Project Busy this Summer
- Spontaneous Stuff Weekend
- Awesome Birthday Present: A Kegerator
- Maven Plugin for Running Integration Tests against Multiple Containers
- Presenting Web Frameworks of the Future Tomorrow in Denver
- My OSCON Aftermath