Use of {0} is required and Accessing resource bundles programmatically in Struts

By: Manoj Kumar Viewed: 153173 times    

Between messages “First Name is Required” and “Last Name is Required”, only the field name changes. We can reuse the message as {0} is required. {0} is replaced with the display name for the field at runtime.

a. Add the following to the MessageResources.properties.

error.required={0} is Required

b. Remove the following error messages from MessageResources.properties

error.cust.firstname.empty=First Name is Required
error.cust.lastname.empty=Last Name is Required

c. Change the validate() method in CustomerForm to use the following type of logic for validating each of first name and last name.

MessageResources msgRes = (MessageResources)
request.getAttribute(Globals.MESSAGES_KEY);
if (firstName == null || firstName.trim().equals(""))
{
String firstName = msgRes.getMessage("prompt.customer.firstname");
String[] rplcmntValueArr = { firstName };
ActionError err = new ActionError("error.required",rplcmntValueArr);
errors.add("firstName", err);
}

d. Add similar logic for lastName validation also.

NOTE: An easier way to achieve the same result is as follows:

if (firstName == null || firstName.trim().equals(""))
{
String[] rplcmntValueArr = { “First Name” };
ActionError err = new ActionError("error.required",rplcmntValueArr);
errors.add("firstName", err);

 

}

But with this approach, the display value of the field i.e. “First Name” is hardcoded in the ActionForm code. That is not good. We have the MessageResource.properties to externalize the display names for the field anyway. We can reuse it by accessing the MessageResources programmatically.

Most Viewed Articles (in Struts )

Latest Articles (in Struts)

Comment on this tutorial