/** * Gets the <code>ActionMessage</code> based on the <code>ValidatorAction</code> message and the * <code>Field</code>'s arg objects. * * @param validator the Validator * @param request the servlet request * @param va Validator action * @param field the validator Field */ public static ActionMessage getActionMessage( Validator validator, HttpServletRequest request, ValidatorAction va, Field field) { Msg msg = field.getMessage(va.getName()); if (msg != null && !msg.isResource()) { return new ActionMessage(msg.getKey(), false); } String msgKey = null; String msgBundle = null; if (msg == null) { msgKey = va.getMsg(); } else { msgKey = msg.getKey(); msgBundle = msg.getBundle(); } if (msgKey == null || msgKey.length() == 0) { return new ActionMessage("??? " + va.getName() + "." + field.getProperty() + " ???", false); } ServletContext application = (ServletContext) validator.getParameterValue(SERVLET_CONTEXT_PARAM); MessageResources messages = getMessageResources(application, request, msgBundle); Locale locale = RequestUtils.getUserLocale(request, null); Arg[] args = field.getArgs(va.getName()); String[] argValues = getArgValues(application, request, messages, locale, args); ActionMessage actionMessage = null; if (msgBundle == null) { actionMessage = new ActionMessage(msgKey, argValues); } else { String message = messages.getMessage(locale, msgKey, argValues); actionMessage = new ActionMessage(message, false); } return actionMessage; }
/** * Gets the <code>Locale</code> sensitive value based on the key passed in. * * @param application the servlet context * @param request the servlet request * @param defaultMessages The default Message resources * @param locale The locale * @param va The Validator Action * @param field The Validator Field */ public static String getMessage( ServletContext application, HttpServletRequest request, MessageResources defaultMessages, Locale locale, ValidatorAction va, Field field) { Msg msg = field.getMessage(va.getName()); if (msg != null && !msg.isResource()) { return msg.getKey(); } String msgKey = null; String msgBundle = null; MessageResources messages = defaultMessages; if (msg == null) { msgKey = va.getMsg(); } else { msgKey = msg.getKey(); msgBundle = msg.getBundle(); if (msg.getBundle() != null) { messages = getMessageResources(application, request, msg.getBundle()); } } if (msgKey == null || msgKey.length() == 0) { return "??? " + va.getName() + "." + field.getProperty() + " ???"; } // Get the arguments Arg[] args = field.getArgs(va.getName()); String[] argValues = getArgValues(application, request, messages, locale, args); // Return the message return messages.getMessage(locale, msgKey, argValues); }