Matt RaibleMatt Raible is a writer with a passion for software. 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.

10+ YEARS


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.
You searched this site for "<a href=". 3,022 entries found.

You can also try this same search on Google.

Tabbed Forms - Making the web look like Excel

One of the things I'm working on for my day job right now is the ability to display an Excel-like UI for editing a form. So I did a search on Google tonight and found DHTML Kitchen. On this site, they had exactly what I was looking for - a howto for creating a tabbed panel system. So I've used this example to create a prototype of what I can do. This is pretty slick b/c now I can give the users a UI that looks like the Excel they're used to, and I can use the same ValidatorForm for the entire page. It even supports remembering which tab you last selected, and also allows navigation to a tab. The DHTML Kitchen also appears to have all kinds of other goodies to checkout. I'll definitely be adding it to my list of cool bookmarks.

If someone could verify that this prototype works in IE 5.5 - that'd be awesome! This is the browser we have to support at work and all my browsers are 6.0+. In return, I offer you the source in a single zip file :-) After playing with this a bit after posting - it seems like it's got a couple of issues in IE 6. The first is that a double line shows up at the bottom of the top tabs after refreshing. Clicking on any tab at the top snaps the tab bar back into place. The second is performance - it's taking 3-8 seconds to load the page - yikes! I'm still going to use it though, and hopefully optimize and fix these issues later.

Posted in The Web at Jan 11 2003, 11:45:23 PM MST 4 Comments

My First Attempt at ConvertUtils

My first attempt at using ConvertUtils is turning out to be a painful one - most likely due to my own ignorance. Let's see if you can help me out. I have a Hibernate Bag, which is really a java.util.List on my User object. When I run the User object through XDoclet, I create a UserForm (extends ValidatorForm). The form has an ArrayList on for any instances of List or Set on the object (set through a custom struts_form.xdt template). So I created a ListConverter to convert a List object to an ArrayList. Sounds pretty simple right?! Here's my ListConverter.java:

public class ListConverter implements Converter {
    //~ Instance fields ========================================================

    protected Log log = LogFactory.getLog(ListConverter.class);

    //~ Methods ================================================================

    /**
     * Convert a List to an ArrayList
     *
     * @param type the class type to output
     * @param value the object to convert
     */
    public Object convert(Class type, Object value) {
        if (log.isDebugEnabled()) {
            log.debug("entering 'convert' method");
        }

        // for a null value, return null
        if (value == null) {
            return null;
        } else if (value instanceof Set && (type == Set.class)) {
            return new ArrayList((Set) value);
        } else if (value instanceof List && (type == List.class)) {
            return new ArrayList((List) value);
        } else {
            throw new ConversionException("Could not convert " + value
                                          + " to ArrayList!");
        }
    }
}

When I run BeanUtils.copyProperties(userForm, user), I get:

Could not convert cirrus.hibernate.collections.Bag@e2892b to ArrayList!

On another class, where I am trying to convert a List of Longs, I get:

Could not convert [-1, 1, 30129] to ArrayList!

I'm registering my custom converter in a static block of my BaseManager class. My *Manager classes do all the conversions, so this seems logical:

static {
    ConvertUtils.register(new StringConverter(), String.class);
    ConvertUtils.register(new LongConverter(), Long.class);
    ConvertUtils.register(new ListConverter(), ArrayList.class);
	
    if (log.isDebugEnabled()) {
        log.debug("Converters registered...");
    }
}

Since I'm in a major time crunch, I'll try simply making my getter/setters on my UserForm to be List. I'd like to use ConvertUtils though, so hopefully someone has a solution.

This brings me to a RANT and I think it's my first official one. My last three projects have always started small, and the goal has always been a prototype of functionality. A prototype that turns into a production system. All fricken three of them. All were supposed to take about 3 months to develop initially. The last two projects took at least 6 months. This one has a one month deadline, but the scope is a lot smaller than the previous two. But still, it's always the same scenario - the clients want a prototype, but turn it into a production system. Since it's a prototype, I tend to write "workarounds" for design patterns (see above) that I can't figure out. Is this good? It probably doesn't hurt since no one will ever look at my code - right?! When's the last time you looked at a co-workers code? (The more == the better). And the truth is, as long as it works - it's probably good enough. However, I as a developer, get heartburn when I think about maintaining the system that I created under the impression that it was a prototype. Maybe one of these days I'll figure out all the best practices to creating a robust web application, and then I'll know everything - so I won't have to write workarounds for my lack of knowledge. If you see some pigs flying, you can think to yourself - "Wow, Raible must've figured it all out" ;-)

Posted in Java at Jan 11 2003, 04:04:43 PM MST 1 Comment

Links to this site and the information found

I saw Russ's "Links To Me" link on his site, and tried it for this site. There I found a great idea from Patrick Chanezon regarding WebTest:

...once you go declarative, you can begin to build tools to generate the declaration.

One could build a Mozilla XUL based tool that would generate this XML based on an interactive testing session in the browser.

Now THAT is a great idea! Any takers?

Posted in Java at Jan 11 2003, 07:48:45 AM MST Add a Comment

E-Mailing errors when an error-page is displayed

I'm implementing an interesting feature this morning. When a user views the error-page of the application, an e-mail is sent to an administrator with a StackTrace. By error-page, I mean the "errorPage" attribute in a JSP's page declaration.

<%@ page language="java" errorPage="/errorPage.jsp" 
    contentType="text/html; charset=utf-8" %>

I'm using the mailer taglib to do this, but can't help thinking that Log4j already provides similar functionality. Doesn't it have an SMTPAppender or something like that. I briefly scanned their site, but didn't see anything. If you know how to configure this functionality - hook me up!

Posted in Java at Jan 11 2003, 06:20:17 AM MST 4 Comments

Returned: Virtual PC 6

After being severly disappointed in my purchase of Connectix's Virtual PC 6, I've returned it. Since I bought it online and downloaded it, it was as simple as sending an e-mail and destroying the software. I had no problems getting rid of the software as it's too damn slow to be tolerable. I don't blame this on Virtual PC, I blame it on the slowness of Apple's CPU. Megahertz don't matter - baaahhh! When I get my 2GHz PowerBook, I might re-purchase this product, but no need for now. I'll settle for using Microsoft's RDC to get my Windows emulation.

So if you're a Mac fan and you're purchasing a new Mac with the hopes of running Virtual PC - you'd better get the dual processor G4, you're gonna need it!

Posted in Mac OS X at Jan 11 2003, 05:26:00 AM MST 1 Comment

Eclipse JDT vs. XDoclet's XJavaDoc

Rather than pulling an all nighter like I have been the last couple of weekends, I decided to go to bed at a reasonable hour and get up early instead. So here I am, woke up at 4:30 and I get to work all damn day today. Should be a blast... While I'm up, here's an interesting post from the xdoclet-devel mailing list:

XJavaDoc is pretty mature by now. -But so is Eclipse. One of the Eclipse modules, JDT, is an engine similar to XJavaDoc. It can be used outside the Eclipse IDE.

The nice thing about JDT is that it has diff/merge support too (I haven't verified this, but Erich Gamma said told me it has that). That would make it possible to edit generated sources and not lose them.

What do you think about evaluating JDT for XDoclet 2?

Also, take a look at the Hibernator source:

http://tinyurl.com/49zk

Hibernator uses Eclipse's java parser, is fairly small, and is therefore an excellent source of inspiration if we want to investigate this path further for XDoclet 2.

Emphasis added by me to indicate my favorite part.

Posted in Java at Jan 11 2003, 05:17:06 AM MST Add a Comment

RE: Niel's Two Cents

Have you read Niel's two cents about java.blogs?

A few weeks ago I made the determination that only my java posts belong on java.blogs, so I modifed my javablogs configuration to point to my java-only RSS feed. I figured that other java.blog users really didn't care to read my posts about the Bucs, Christmas, etc... Well I am getting really tired of going to javablogs and reading a ton of posts that have nothing to do with java. I don't have anything against the authors or their posts. I just don't think they belong on java.blogs.

While I have modified and re-submitted my site with a Java-only category, I have to disagree with Neil. I enjoy good content and I could care less what it's about. I use Java Blogs as my aggregator away-from-home, and frankly - sometimes Java is kind of boring. I've found myself hitting my blogroll pretty often lately. I check java.blogs from work, and sometimes it's just not that interesting, so I go and check out the folks sites that I know are good. I say, give me all the goods, fellow Java developers/experts - just make it interesting and I'll be happy. When's the last time you read TSS? That's gotten a bit boring lately too.

I hope this doesn't offend anyone, as I'm just trying to inspire good content - myself included! =80)

Posted in Java at Jan 10 2003, 10:21:57 PM MST Add a Comment

Enable Rendezvous in Chimera

Did you know you can enable Rendezvous in my favorite browser? Man, that sounds cool! I haven't tried it yet, but will shortly after finishing this post!

Rendezvous is a technology promoted by Apple that aims to eliminate the need to configure network devices. Chimera supports Rendezvous to allow you to see HTTP and FTP servers on your local network, which may be provided by machines running Mac OS X or other operating systems, or devices such as printers or web-cams that have embedded servers.

Chimera requires Mac OS X 10.2.3 or later to be able to show Rendezvous devices, and the feature is currently off by default, since it is still somewhat experimental. To enable it, edit your user.js file, adding the line:

user_pref("chimera.enable_rendezvous", true);

When you restart Chimera, you should see a “Local Network Services” item on the Go menu, with a submenu that lists local servers. If you enabled FTP access on your machine, you should see that in the list; others may show up, depending on what servers and devices are available on your local network.

Tip o' the Hat to Eric. While you're at it, you might want to checkout ChimeraKnight. It automatically updates Chimera to the latest nightly version - perfect for update addicts like me.

Posted in Mac OS X at Jan 10 2003, 09:59:31 PM MST Add a Comment

The Road to Happiness

As you may have noticed, I didn't write anything on this site yesterday. Believe me, I wanted to, especially after reading this call to arms for Struts Developers. But instead, I did some work on my New Years resolution. First I went to the gym and played basketball (yeah, you really wanted to hear about that ;-) with one of greatest friends, Shane Murphy. Then I came home and relaxed a bit. As I was getting ready to jump on the ol' computer and blog about how much I loved Hibernate and such, Julie asked me if I'd change Abbie. I said "Sure!" As I was changing her, she smiled at me and giggled. If you have children - you know how cool this is - especially when it's one of the first times. She started smiling a couple of weeks ago - but now you can tell she really means it. So I said, "happiness it is," and I read her a story (Father's Flying Flapjacks) and played with her for a good hour. We were sticking our tongues out at each other and had an awesome time. She is the coolest kid in the world! What an sweet way to end the day. I'm happy to say that I ended up falling asleep (with Abbie on my arm) without getting on the computer.

Posted in General at Jan 10 2003, 09:44:29 PM MST 2 Comments

Lovin' Hibernate

I'm loving Hibernate after using it for a few weeks. I'm sure I'd like it a lot more if I'd break down and read the documenation. But nope, I'm still only reading it on a JIT basis. I feel about Hibernate like I first felt about Struts. It's fun and easy to work with and makes my persistent-life soooo much easier. Now if I could only break down and learn something about ConvertUtils.

Posted in Java at Jan 10 2003, 09:29:37 PM MST Add a Comment