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.

[Tomcat 4.1.x] Authentication Best Practices

From the tomcat-user mailing list, John Swapceinski brings us Authentication Best Practices. Lots of scriptlets in his JSPs, but nevertheless, very good information.

Posted in Java at Mar 31 2003, 08:18:45 AM MST 1 Comment

Cool TagLib Document

I found this gem on the strut-user list tonight.

* TaglibDoc
    This is a JavaDoc-like set of html and css files for browsing the
    taglib documentation.  Here's what this target does (I ran this
    about 15 minutes ago):

      http://struts.sourceforge.net/struts-atlanta/taglibdoc/

* TaglibReport
    This target will generate a grid-like view of the taglibs and their
    attributes so that you can see every tag in a typical package side
    by side.  This helps when comparing which tags implement a certain
    attribute, by allowing you to view them side by side and not have to
    look up each tag by hand. (also about 15 minutes ago)

      http://struts.sourceforge.net/struts-atlanta/taglibreport/

Project by Mohan Kishore, posting by James Mitchell.

Posted in Java at Mar 30 2003, 07:23:25 PM MST 2 Comments

StrutsCX Article

The stats on the bottom right of this site are definitely wrong. At the time of this writing, it says I've had 4,351 hits today. Yeah right. I did, however, discover that I have been linked to in a major article and I'm getting a fair bit of traffic from that. The article is called Generate Web Output in Multiple Formats and Languages with StrutsCX and is hosted by DevX.com.

Why did the author include a link to this site? Because I'm hosting a demo of the StrutsCX application. I hope to use ideas from this app when I develop the XSL/XML rendering of resumes for my struts-resume app that I may/may not ever finish. I do plan on finishing it someday, but since I'm my own client - there's no deadline, no pay, and little motivation. But it is very cool to have my own reference application that I can play with to try new stuff. I definitely dig that. I can guarantee that as soon as I get indexed property validation working, it'll be in there - and that will also motivate adding many child items (i.e. skills, education, etc.) to the resume item.

Posted in Java at Mar 30 2003, 12:30:10 PM MST Add a Comment

WebWork Tutorial makes it look easy

I have to admit that this webwork tutorial makes WebWork look easy. In comparing this to Struts, it seems as if the Form and Action are the same thing. I wonder if I could use BeanUtils.copyProperties(wwAction, POJO) like I am with Hibernate/Struts currently.

The funny thing is that XDoclet has made it so easy (IMO) that I don't write ActionForm's anymore. All I really write is Actions, JSPs, DAOs and Services (a.k.a. Managers). So, with my current architecture I'm using, it actually looks like more work to use WebWork's Actions than Struts Actions. Especially since I have to write my validation in my Action. The XDoclet/Validator combo makes this super simple with Struts (and would with WW if they'd adopt it ;-). The only time I've been writing forms lately is when I have a form with indexed properties. Then I create a childForm that extends the generated form and has the appropriate accessors/mutators for the indexed properties.

The one thing the article does bring to light is how much cleaner Velocity is. JSP 2.0 will make JSP's a lot easier, but Velocity looks like it's already there. The one thing that worries me about using Velocity is that, according to their homepage, they haven't had a release in 8 months and their last release was a Release Candidate. What the?! Seems like someone might be dropping the ball on that project.

Posted in Java at Mar 30 2003, 11:26:58 AM MST 6 Comments

Hibern8 IDE

Max Andersen created a quick'n'dirty Hibern8 IDE in less than 3 hours tonight. For your viewing pleasure, he also created a viewlet. Very cool Max!

Posted in Java at Mar 29 2003, 11:58:47 PM MST 4 Comments

Struts Training: Week 4

I missed last week (Week 4, PosgreSQL), but I'm back this week - ready to report. I'm presenting next week on "remember-me" and XDoclet, so I'm working frantically trying to get AppFuse up-to-snuff to use as a lab template. Hopefully, I'll have that done by tomorrow night, as well as the lab and presentation.

Today's presentation is from James Turner on Indexed Properties and Validation. Awesome - I need this in my day job's project starting next week! Good timing, eh?!

So how do you use indexed properties in Forms? Two ways: Simple arrays of strings and arrays of beans (recommended). Here's a good tip - if you're using DynaActionForms, you can access a property in JSTL using {form.map.propertyName}. I did not know that - thanks James! Lots of good stuff in this one (too much to write down), I hope this preso is available online and a demo app goes with it. To validate simple array of strings, add indexedlistProperty to your <field> in validation.xml (you must also specify the property). If you're validating beans, use property="propertyName" and indexedListProperty="beanName".

However, do you really want to require all fields of your child beans? No, probably not. You (most likely), just want to require fields if some fields are populated. Struts provides us with the requiredif validator. No JavaScript validation exists for requiredif at this time. Hmmm, I wonder if XDoclet can generate indexed validation rules. Here's an example of how to do this with the current 1.1 RC1 Release.

<form name="myForm">
  <field property="lastName" indexedListProperty="person" 
    depends="">
    <arg0 key="label.lastName"/>
  </field>
  <field property="firstName" indexedListProperty="person" 
    depends="requiredif">
    <arg0 key="label.firstName"/>
    <var>
      <var-name>field[0]</var-name>
      <var-value>lastName</var-value>
    </var>
    <var>
      <var-name>fieldIndexed[0]</var-name>
      <var-value>true</var-value>
    </var>
    <var>
      <var-name>fieldTest[0]</var-name>
      <var-value>NOTNULL</var-value>
    </var>
  </field>
  ...
</form>

Note that the [0] is NOT an indicator of which indexed property to validate. RequiredIf is powerful but ugly, so James wrote something better. Unfortunately, it's too late for 1.1 and will be added for the 1.2 release. Sounds like most folks that use the Validator will be using a nightly build for awhile ;-). The new validator is called "validwhen," and looks as follows:

<field property="firstName"
  indexedListProperty="dependents"
  depends="validwhen">
  <arg0 key="dependentListForm.firstName.label"/>
  <var>
    <var-name>test</var-name>
    <var-value>((dependents[].lastName == null) or
                (dependents[].firstName != null))
    </var-value>
  </var>
</field>

Fricken sweet! James is sending me the code - cool! This will make my life soooooo much easier next week. Status of Struts 1.1 from James: they're working on getting the commons packages to a release state. Slides from today will be available at strutskickstart.com later this afternoon.

Posted in Java at Mar 29 2003, 09:32:28 AM MST 4 Comments

[ANNOUNCE] Eclipse 2.1 Released!

Sweeettt!!! Hopefully the release cycle will now slow down a bit so I don't have to keep installing Release Candidates every week. If you're a enthusiastic Eclipse user like me, be sure and read what's New and Noteworthy in 2.1. [Download Now]

Thanks to Andres Bonifacio for the tip.

Posted in Java at Mar 28 2003, 08:19:26 PM MST Add a Comment

Good Story

Read this - sounds cool! If only it where true, that would rock. However, it's a featured story from Weekly World News, which we all know is a bunhc of horse pucky.

NEW YORK -- Federal investigators have arrested an enigmatic Wall Street wiz on insider-trading charges -- and incredibly, he claims to be a time-traveler from the year 2256! [more...]

Posted in General at Mar 28 2003, 12:05:54 PM MST Add a Comment

Frames and XHTML

I'm in the midst of a small redesign of an application's UI for a client. The previous (and current) design uses an <iframe> to display most of the content in the app (it's an e-learning app). The driving forces behind the re-design are to 1) make the UI fluid rather than fixed height/width, and 2) make the application work on Opera 6 on Linux.

The re-design began with them sending me some screenshots of proposed layouts, and I used that to formulate what you see today. Basically, what they (and I) was hoping to accomplish was a fixed header/footer height and a fluid center. I tried doing this with an iframe, but had inconsistence results. So I tried consulting the experts. No one seemed to have a solution - and it seems that a fixed header/footer, fluid center is not possible with XHTML. So I resorted to using frames, which is what you see now. The reason I'm writing this post is to express my frustration with frames and the current XHTML Standards. You basically start a framed page with a <frameset> right? Any of you that have worked with frames know that it's a headache to get framespacing correct between all the browsers you need to support. Throw Netscape 4 into the mix, and consistency is virtually impossible. The problem with a frameset in XHMTL is that there are no supporting attributes for eliminating a frameset's spacing or border. From looking at the XHTML DTD, you can see that our old friends frameborder (="0" needed for Mozilla) and border (="0" needed for Opera) are missing:

<!ATTLIST frameset
    %coreattrs; 
    rows %MultiLengths; #IMPLIED
    cols %MultiLengths; #IMPLIED
    onload %Script; #IMPLIED
    onunload %Script; #IMPLIED
>

So I ended up following Zeldman's advice and K10K's examples and adding these attributes in. Why? Because they work to achieve the results I want. It doesn't validate, but it does work, so I'm going with it. If anyone has any alternatives to achieve borderless frames with CSS, please let me know.

The cool part about this post is that I get to tell you that the device we're targeting with Opera 6/Linux is the FreePad - a type of Tablet PC, but more like a wireless browser. Looks cool, that's for sure - and it's possible I'll even get a demo machine to test the new layout on.

FreePad

Posted in The Web at Mar 28 2003, 06:40:55 AM MST Add a Comment

FreeRoller gets a new home

FreeRoller is going to have a new home. The JavaLobby has offered to host FreeRoller on one of there servers which is significantly more powerful than "el crappo", the dinky box which currently hosts FreeRoller. In order to support the move FreeRoller will be going down for a little bit of time in the near future (probably today). Once FreeRoller is back up we will still be using "el crappo" until the DNS migration is complete, which will take a day or two. The DNS migration should be transparent though so the only outage will occur when we switch databases. [All Things Java]

Posted in Roller at Mar 27 2003, 02:02:58 PM MST Add a Comment