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 "struts". 749 entries found.

You can also try this same search on Google.

PMD and Checkstyle

I knew about Checkstyle, but PMD is new to me. The Struts Development Team has recently added these tasks to its build.xml file if you're interested in an example. Erik Hatcher has the Checkstyle task in his JavaDevWithAnt project, and I'm using his build.xml file as a model, but I've never used the Task. I've also had the Checkstyle Plug-In for Eclipse installed at one point, but it gave me so many errors - I disabled it. It'd be nice to use these from the beginning on a project.

Posted in Java at Jan 05 2003, 12:52:38 PM MST 2 Comments

[ANNOUNCE] StrutsTestCase v1.9.5 Released!

StrutsTestCase v1.9.5 improves support for Struts 1.1b3 (including support for testing Tiles and sub-applications), provides several requested enhancements, and fixes many reported defects.

For your clicking pleasure, check out the project's homepage or view the release notes.

Posted in Java at Jan 05 2003, 11:48:59 AM MST Add a Comment

Using Both Ant and Maven

Erik Hatcher makes a request to get his JavaDevWithAnt project converted from using Ant to Maven:

Ok, a challenge to the Maven or Centipede experts tuning into my blog: make my JavaDevWithAnt project build with either. But the trick is that it has to be simpler than the current Ant build.xml. Believe it or not, I've not (seriously) used either of these tools. I hear the buzz about these and want to become a "believer".

I'm all for this as I've created my AppFuse project using his directory structure/build file as a template. I did go down this path to Mavenism already, but gave up before I finished. My problem is I have 15 different 3rd party JARs I use in my project - many testing frameworks and jakarta stuff. And a lot of these are nightly (or personal) builds because there's been some bug fixed, or enhancement added. What I really want is to continue using Ant b/c I think it rocks and it gives me more control over little tasks, but also to use Maven to generate a project site.

The problem with Erik's request is that I'm guessing no one will jump at the opportunity. Maybe, but in reality, no one looks at each others code unless there's a bug, or they need a sample to get started. Too bad - we could really do wonders for the Java Community if we started reviewing each others code. Erik, maybe you could post little snippets of your build file, and we could convert small parts of it. By posting a measly 10 lines, some other coders might be so inclined to help mavenize it. I know this is not how Maven works, but it sure would be nice if using Maven didn't require abandoning Ant.

Tonight I'll be staying up late trying to finish up AppFuse and Struts-Resume. Since the security-example download seems to be getting a lot of traffic (and it's a 15MB download), I should probably try to get these projects into SourceForge and save myself some bandwidth. Who knows if I'll get it done, I'm pretty tired, and it's already 10:00. But what choice do I have - Saturdays are family days, I promised my client that I pump a bunch of new features out on Sunday, and I get to work an 80 hour-week next week to get our first version out at my new job. Ugh, I need a vacation.

Posted in Java at Jan 03 2003, 09:47:25 PM MST Add a Comment

Fighting Technology and Fatherhood

Today was one of those days I hate. I've been struggling with Hibernate for what seems like weeks now. Today was a day that almost convinced me to quit trying. I seem to be fighting with XDoclet and Hibernate all day, every day. I don't seem to be getting anything done on my AppFuse project, nor at my new on-site project.

I am getting things done, but if I'd just done JDBC, I'd probably much further ahead than I am right now. Such is the life of someone that tries to learn the latest technologies. I remember doing this with Struts and now I'm grateful that I did. Hopefully, using/learning/struggling with XDoclet and Hibernate will soon get better. The Hibernate and XDoclet developers have been great in dealing with my learning curve - thanks guys.

I predict my learning curve will be similar as that with Struts. This means that I will write all kinds of code as workarounds for problems I'm having - since I have ridiculous deadlines and I need to get it working. The sad part is that I'm willing to bet that I'll delete a whole bunch of this code when I finally figure out how to work with Hibernate, rather than against it. I think it's a great framework, but I'm trying to do too much from examples, rather than digging in and actually learning the framework. This is the hard way, but alas - I will learn it well - through my own mistakes.

I got a nice break from Technology tonight as Julie and I went to pick up our new car. We drove the long way home - through Red Rocks. We enjoyed the smooth ride, bright lights, and nice stereo. The bug had all of this, but the Accord is newer, and therefore, more fun. We stopped and bought a bottle of wine at one of my favorite liquor stores in Morrison and had a nice little celebration. I was planning on finishing up my struts-resume sample application tonight, but instead decided to play with Abbie. We gurgled and had some "tummy time" - and I definitely feel like I did the right thing.

I think I really need to stop working so much, and start being a Dad more. I've worked every weekend since she was born, and I feel like an Ass for it. Hopefully, the Wrox gig will be over soon, and I'll be able to catch up on my work for OnPoint and relax a little more. All this extra work is wearing me thin, especially when it's been dumping in the mountains lately - I don't know how many more "8 inches at Vail" e-mails I can take!!

The encouraging news (for you, the reader) is that I (with the help of Keith) upgraded this site to use a 100MB connection tonight. Hopefully the site will be a bit faster, but you know how bandwidth works - you pay for more and never seem to get it.

Posted in Java at Jan 02 2003, 10:21:16 PM MST 2 Comments

RE: ArrayList vs. Vector - which is better for webapps?

What the hell was I thinking?! I must've been tired this morning when I wrote the last post. I meant to say Serializable not Synchronized!! Yikes - what a blunder! Does this change your feelings? What if I have a UserForm (extends ActionForm) that has an ArrayList of children? I usually put a user's Form in the session, so I can access their information at any time.

Posted in Java at Jan 02 2003, 08:19:16 PM MST 1 Comment

[ANNOUNCEMENT] Struts 1.1 Beta 3 Released

The Struts team is proud to announce the release of Struts 1.1 Beta 3. This release includes significant new functionality, while retaining full backwards compatibility with earlier versions of Struts. It also incorporates fixes for a number of bugs which were reported against earlier versions.

The binary distribution is available at:

  http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b3/

and the source distribution is available at:

  http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b3/src/

In addition, the library distibution, which contains updated binaries without the sample applications, is available at:

  http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b3/lib/

Details of the changes in this release are available in the Release Notes, which can be found here:

  http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b3.html

Sweet! Now I can stop downloading the nightly build for a while! Thanks Struts Developers - what a great New Years Eve present! Awesome!

Posted in Java at Dec 31 2002, 05:29:35 AM MST Add a Comment

New Car Shopping - the lost post

Julie and I had a nice day together on Saturday. Grammy (Julie's mom) was in town for the holidays and was more than happy to be our babysitter. Our goal for the day was to go and look at new cars, in hopes of finding one we liked. My bug is a little impracticle now since it has such a small back seat and it's a pain to put a carseat in and out of. Julie did some research on the web, and had already looked at the Toyota Camry, as well as briefly looking at the Honda Accord. I've been out of the process for most of it b/c of my writing, and so it was a nice day to get together, do some shopping and make a mutual decision. We started out at the Audi dealership b/c I love the A4 (man their website is slow, and it doesn't work in Phoenix) and then tried the VW Passat, the Mazda 6 (did you know that Mazda is owned by Ford) and finally the Honda Accord. We actually stumbled upon the Mazda, as the sales guy at the Audi/VW place happened to also be a saleman at the Maza place next door. Here's what I thought of each:

  • Audi A4 - this was my dream car. It drives real nice, it's fast and it looks awesome. Problem? It's small, and when I say small, I mean small. The interior room is smaller than my bug to give you an idea. That sucs b/c I really wanted this car. Pretty damn expensive though, so probably good that we didn't like it after we drove it.
  • VW Passat - much roomier, but definitely a step down from the A4 feature-wise. The stereo (a Monsoon system), seemed awful, but that couldn't been b/c we just got done driving the A4 with a Bose system.
  • Mazda 6 - very nice car, and definitely better than the first two. The problem - we never had Mazda on our list of cars-to-look-at, and we felt like we were "settling" if we got it. Definitely an awesome car, and if they'd had the color/V6 we wanted, we probably would've bought it.
  • Honda Accord - this is a P-H-A-T car! It's definitely a family rig, but the inside is like a Cadi and it's still reasonably priced. It had everything the A4 had (save auto-up windows), plus a navigation system that Julie wants and I think is a waste of money - $2000! Of course, I wanted the 17" roms, and that's definitely a waste of money.

So I think we're going to get teh Accord if we can find the right color and a V6. We'll see, they have some great rebates through the end of teh year (Tuesday), so who knows. After shopping for calls all day, we went to the Raible Designs' Holiday Party at Morton's Steak House. Only a couple people showed up (the only two employees), but it was definitely a great time, and a nice romantic evening.

It was also fun b/c I used to work for the valet (Kenny) in college, when I was a valet in downtown Denver (Larimer Square). He's a very cool guy and I haven't seen him in about 7 years - so it was nice to catch up. It should be a good week if I get to start driving a new car, but it'll be sad to see the ol' Turbo (a.k.a. Speedy Gonzales) go away. There goes my youth - onto being a dad and a family man. With a kid as cute as Abbie, it's going to be a lot of fun.

Above was the post I lost on Sunday, and since I had the screenshot, I felt the need to post it anyway. We did find the Honda Accord we wanted today and went into Planet Honda to sign all the paperwork. It's schedule to arrive tomorrow, but could be as late as Friday. We'll see - the hard part is over, now we just have to pick it up. I also finished the writing part of my Struts chapter last night - finally! I feel like a huge weight has been lifted off my shoulders. I'll be posting the sample app for it in the next week or so.

Posted in General at Dec 30 2002, 09:45:16 PM MST Add a Comment

RE: PlugIns and Struts Nightly Build

It turns out that I didn't need to add the setCurrentPlugInConfigObject method to struts-menu's MenuPlugIn.java. I just needed to compile struts-menu with the latest struts.jar. This told me that the init(ActionServlet, ApplicationConfig) had been removed and I had to implement init(ActionServlet, ModuleConfig). The ApplicationConfig interface has been deprecated in recent weeks in favor of ModuleConfig, but you would think that this method would be deprecated as well, not removed! Oh well, I've fixed my local version of Struts Menu, but don't know how to handle making a Struts 1.1-compliant version, and a Struts 1.0.x-compliant version. Any ideas are appreciated. You can track this issue in Struts' Bugzilla.

Posted in Java at Dec 29 2002, 04:33:34 AM MST Add a Comment

PlugIns and Struts Nightly Build

I had a nice frustrating evening tonight trying to get the nightly build of Struts to work with Tiles, Modules and the Struts Menu. Actually, it wasn't a Struts problem so much as a Struts Menu problem. I was getting a java.lang.AbstractMethodError error when hitting the first action class, and couldn't figure out why. I started by bitching to the struts-dev list, and then filed a bug. Eddie Bush was kind enough to suggest that there was something wrong with my PlugIns. I thought - how could there be - I'm using Tiles and Validator? So I looked at my struts-plugins.xml file and there was the culprit - struts-menu. It turns out that I needed to add the following variable and method to MenuPlugIn.java:

/** The plugin config object provided by the ActionServlet initializing
 *  this plugin.
 */
protected PlugInConfig currentPlugInConfigObject;

/**
 * Method used by the ActionServlet initializing this plugin.
 * Set the plugin config object read from module config.
 * @param currentPlugInConfigObject
 */
public void setCurrentPlugInConfigObject(PlugInConfig currentPlugInConfigObject) {
    this.currentPlugInConfigObject = currentPlugInConfigObject;
}

This post was written in hopes of alleviating someone else's troubles with this same problem.

Posted in Java at Dec 28 2002, 02:00:47 AM MST Add a Comment

Java Development with Ant, The Application

Ant Book If you've been fortunate enough to read Erik Hatcher's Java Development with Ant, you know that there's tons of good tips in it. I read it and I've been recommending it every since. Erik has been continuing development of the sample app for the book ever since it was released. I got many tips from Erik in developing AppFuse and I have to say, it really is a nice example. Maybe I'll get some more stuff now that it appears to have jumped from version 0.4 to 0.9! Here's a message Erik sent about the latest release.

All -

I'm proud (and worried about the support e-mails! :) to announce the 
near-final release of a project demonstrating Ant, XDoclet, Struts, 
JUnit, Cactus, and Lucene.  Its called JavaDevWithAnt as it was written 
for the book Steve and I co-authored and has been refined during 
several presentations I've been giving on Ant, XDoclet and Struts.

The documentation is in draft stage, and my primary goal is to collect 
feedback on polishing the documentation (and the application if there 
are any bugs that surface).  The site where I'm hosting the 
distribution and documentation is:

	http://www.ehatchersolutions.com/JavaDevWithAnt/

Please let me know if you try it out and have suggestions for 
improvement, or just to let me know you tried it and hate it or love 
it, etc.  Feedback more than welcome!  Direct feedback to me at 
[email protected]

	Erik

p.s. Since this e-mail is directed to the XDoclet, Lucene, and Cactus 
lists, here is a brief teaser for you:

XDoclet - its used extensively, even using a custom tag handler to 
generate starter JSP's from Struts form beans.

Lucene - my <index> Ant task is used to index text and HTML files, and 
Lucene's API is used at run-time to query the index.

Cactus - StrutsTestCase is used, although no direct Cactus tests.

Happy information-overload! There's a lot there, but if I could figure it out - I'm sure you can. Erik - finally on Jaguar eh? What took you so long ;-)

Posted in Java at Dec 27 2002, 07:25:45 PM MST 1 Comment