You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ni...@apache.org on 2005/03/28 19:35:48 UTC
svn commit: r159268 - in struts/core/trunk: conf/share/validator-rules.xml
src/share/org/apache/struts/action/ActionMessage.java
src/share/org/apache/struts/validator/FieldChecks.java
src/share/org/apache/struts/validator/Resources.java
src/share/org/apache/struts/validator/validwhen/ValidWhen.java
Author: niallp
Date: Mon Mar 28 09:35:46 2005
New Revision: 159268
URL: http://svn.apache.org/viewcvs?view=rev&rev=159268
Log:
Bug 21760 Validator support for non-default Resource bundles reported by Adam Kramer
Modified:
struts/core/trunk/conf/share/validator-rules.xml
struts/core/trunk/src/share/org/apache/struts/action/ActionMessage.java
struts/core/trunk/src/share/org/apache/struts/validator/FieldChecks.java
struts/core/trunk/src/share/org/apache/struts/validator/Resources.java
struts/core/trunk/src/share/org/apache/struts/validator/validwhen/ValidWhen.java
Modified: struts/core/trunk/conf/share/validator-rules.xml
URL: http://svn.apache.org/viewcvs/struts/core/trunk/conf/share/validator-rules.xml?view=diff&r1=159267&r2=159268
==============================================================================
--- struts/core/trunk/conf/share/validator-rules.xml (original)
+++ struts/core/trunk/conf/share/validator-rules.xml Mon Mar 28 09:35:46 2005
@@ -56,6 +56,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
@@ -89,6 +90,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.minlength"
@@ -102,6 +104,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.maxlength"
@@ -116,6 +119,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.invalid"/>
@@ -128,6 +132,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.byte"
@@ -141,6 +146,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.short"
@@ -154,6 +160,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.integer"
@@ -168,6 +175,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.long"/>
@@ -180,6 +188,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.float"
@@ -192,6 +201,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.double"/>
@@ -204,6 +214,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.date"
@@ -217,6 +228,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="integer"
msg="errors.range"/>
@@ -229,6 +241,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="float"
msg="errors.range"/>
@@ -240,6 +253,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="double"
msg="errors.range"/>
@@ -252,6 +266,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.creditcard"/>
@@ -264,6 +279,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.email"/>
@@ -275,6 +291,7 @@
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
+ org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.url"/>
Modified: struts/core/trunk/src/share/org/apache/struts/action/ActionMessage.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/action/ActionMessage.java?view=diff&r1=159267&r2=159268
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/action/ActionMessage.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/action/ActionMessage.java Mon Mar 28 09:35:46 2005
@@ -110,6 +110,20 @@
this.key = key;
this.values = values;
+ this.resource = true;
+
+ }
+
+ /**
+ * <p>Construct an action message with the specified replacement values.</p>
+ *
+ * @param key Message key for this message
+ * @param resource Indicates whether the key is a bundle key or literal value
+ */
+ public ActionMessage(String key, boolean resource) {
+
+ this.key = key;
+ this.resource = resource;
}
@@ -128,6 +142,11 @@
*/
protected Object values[] = null;
+ /**
+ * <p>Indicates whether the key is taken to be as a bundle key [true] or literal value [false].</p>
+ */
+ protected boolean resource = true;
+
// --------------------------------------------------------- Public Methods
@@ -148,6 +167,16 @@
public Object[] getValues() {
return (this.values);
+
+ }
+
+
+ /**
+ * <p>Indicate whether the key is taken to be as a bundle key [true] or literal value [false].</p>
+ */
+ public boolean isResource() {
+
+ return (this.resource);
}
Modified: struts/core/trunk/src/share/org/apache/struts/validator/FieldChecks.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/validator/FieldChecks.java?view=diff&r1=159267&r2=159268
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/validator/FieldChecks.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/validator/FieldChecks.java Mon Mar 28 09:35:46 2005
@@ -22,6 +22,7 @@
import java.util.Locale;
import java.util.StringTokenizer;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
@@ -30,6 +31,7 @@
import org.apache.commons.validator.GenericTypeValidator;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.UrlValidator;
+import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionMessages;
@@ -69,12 +71,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if
* any validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if meets stated requirements, false otherwise.
*/
public static boolean validateRequired(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -85,7 +90,7 @@
}
if (GenericValidator.isBlankOrNull(value)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
} else {
return true;
@@ -111,7 +116,7 @@
public static boolean validateRequiredIf(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
- org.apache.commons.validator.Validator validator,
+ Validator validator,
HttpServletRequest request) {
Object form = validator.getParameterValue(org.apache.commons.validator.Validator.BEAN_PARAM);
@@ -188,7 +193,7 @@
if (GenericValidator.isBlankOrNull(value)) {
errors.add(
field.getKey(),
- Resources.getActionMessage(request, va, field));
+ Resources.getActionMessage(validator, request, va, field));
return false;
@@ -209,12 +214,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if
* any validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if field matches mask, false otherwise.
*/
public static boolean validateMask(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String mask = field.getVarValue("mask");
@@ -231,7 +239,7 @@
errors.add(
field.getKey(),
- Resources.getActionMessage(request, va, field));
+ Resources.getActionMessage(validator, request, va, field));
return false;
} else {
@@ -253,12 +261,15 @@
*field being validated.
*@param errors The <code>ActionMessages</code> object to add errors to if
*any validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
*@param request Current request object.
*@return true if valid, false otherwise.
*/
public static Object validateByte(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
@@ -276,7 +287,7 @@
result = GenericTypeValidator.formatByte(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -292,12 +303,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if
* any validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateShort(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
String value = null;
@@ -314,7 +328,7 @@
result = GenericTypeValidator.formatShort(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -330,12 +344,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateInteger(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
String value = null;
@@ -352,7 +369,7 @@
result = GenericTypeValidator.formatInt(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -368,12 +385,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateLong(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
String value = null;
@@ -390,7 +410,7 @@
result = GenericTypeValidator.formatLong(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -406,12 +426,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateFloat(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
String value = null;
@@ -428,7 +451,7 @@
result = GenericTypeValidator.formatFloat(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -444,12 +467,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateDouble(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
String value = null;
@@ -466,7 +492,7 @@
result = GenericTypeValidator.formatDouble(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -488,12 +514,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateDate(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
@@ -524,7 +553,7 @@
}
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -540,12 +569,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if in range, false otherwise.
*/
public static boolean validateIntRange(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -562,12 +594,12 @@
int max = Integer.parseInt(field.getVarValue("max"));
if (!GenericValidator.isInRange(intValue, min, max)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -585,12 +617,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if in range, false otherwise.
*/
public static boolean validateDoubleRange(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -607,12 +642,12 @@
double max = Double.parseDouble(field.getVarValue("max"));
if (!GenericValidator.isInRange(doubleValue, min, max)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -630,12 +665,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if in range, false otherwise.
*/
public static boolean validateFloatRange(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -652,12 +690,12 @@
float max = Float.parseFloat(field.getVarValue("max"));
if (!GenericValidator.isInRange(floatValue, min, max)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -675,12 +713,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return true if valid, false otherwise.
*/
public static Object validateCreditCard(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
Object result = null;
@@ -698,7 +739,7 @@
result = GenericTypeValidator.formatCreditCard(value);
if (result == null) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
}
return result == null ? Boolean.FALSE : result;
@@ -715,12 +756,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if valid, false otherwise.
*/
public static boolean validateEmail(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -731,7 +775,7 @@
}
if (!GenericValidator.isBlankOrNull(value) && !GenericValidator.isEmail(value)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
} else {
return true;
@@ -749,12 +793,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if stated conditions met.
*/
public static boolean validateMaxLength(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -769,12 +816,12 @@
int max = Integer.parseInt(field.getVarValue("maxlength"));
if (!GenericValidator.maxLength(value, max)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -793,12 +840,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if stated conditions met.
*/
public static boolean validateMinLength(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -813,12 +863,12 @@
int min = Integer.parseInt(field.getVarValue("minlength"));
if (!GenericValidator.minLength(value, min)) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -851,12 +901,15 @@
* field being validated.
* @param errors The <code>ActionMessages</code> object to add errors to if any
* validation errors occur.
+ * @param validator The <code>Validator</code> instance, used to access
+ * other field values.
* @param request Current request object.
* @return True if valid, false otherwise.
*/
public static boolean validateUrl(Object bean,
ValidatorAction va, Field field,
ActionMessages errors,
+ Validator validator,
HttpServletRequest request) {
String value = null;
@@ -889,7 +942,7 @@
if (GenericValidator.isUrl(value)) {
return true;
} else {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
@@ -913,7 +966,7 @@
if (urlValidator.isValid(value)) {
return true;
} else {
- errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
+ errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
Modified: struts/core/trunk/src/share/org/apache/struts/validator/Resources.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/validator/Resources.java?view=diff&r1=159267&r2=159268
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/validator/Resources.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/validator/Resources.java Mon Mar 28 09:35:46 2005
@@ -25,6 +25,7 @@
import org.apache.commons.validator.Arg;
import org.apache.commons.validator.Field;
+import org.apache.commons.validator.Msg;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.ValidatorResources;
@@ -35,6 +36,7 @@
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.ModuleUtils;
import org.apache.struts.util.RequestUtils;
+import org.apache.struts.config.ModuleConfig;
/**
* This class helps provides some useful methods for retrieving objects
@@ -108,6 +110,41 @@
}
/**
+ * Retrieve <code>MessageResources</code> for the module and bundle.
+ * @param application the servlet context
+ * @param request the servlet request
+ * @param bundle the bundle key
+ */
+ public static MessageResources getMessageResources(
+ ServletContext application,
+ HttpServletRequest request,
+ String bundle) {
+
+ if (bundle == null) {
+ bundle = Globals.MESSAGES_KEY;
+ }
+
+ MessageResources resources = (MessageResources)request.getAttribute(bundle);
+
+ if (resources == null) {
+ ModuleConfig moduleConfig = ModuleUtils.getInstance()
+ .getModuleConfig(request, application);
+ resources = (MessageResources)application.getAttribute(bundle + moduleConfig.getPrefix());
+ }
+
+ if (resources == null) {
+ resources = (MessageResources)application.getAttribute(bundle);
+ }
+
+ if (resources == null) {
+ throw new NullPointerException("No message resources found for bundle: " + bundle);
+ }
+
+ return resources;
+
+ }
+
+ /**
* Get the <code>Locale</code> of the current user.
* @param request servlet request
* @deprecated Use RequestUtils.getUserLocale() instead. This will be removed
@@ -170,6 +207,52 @@
return messages.getMessage(locale, msg, args);
}
+ /**
+ * 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);
+
+ }
/**
* Gets the <code>ActionError</code> based on the
@@ -230,6 +313,58 @@
}
/**
+ * 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 message arguments based on the current
* <code>ValidatorAction</code> and <code>Field</code>.
* @param actionName action name
@@ -266,6 +401,49 @@
}
return argMessages;
+ }
+
+ /**
+ * Gets the message arguments based on the current
+ * <code>ValidatorAction</code> and <code>Field</code>.
+ * @param application the servlet context
+ * @param request the servlet request
+ * @param defaultMessages Default message resources
+ * @param locale the locale
+ * @param args The arguments for the message
+ */
+ private static String[] getArgValues(
+ ServletContext application,
+ HttpServletRequest request,
+ MessageResources defaultMessages,
+ Locale locale,
+ Arg[] args) {
+
+ if (args == null || args.length == 0) {
+ return null;
+ }
+
+ String[] values = new String[args.length];
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] != null) {
+ if (args[i].isResource()) {
+
+ MessageResources messages = defaultMessages;
+ if (args[i].getBundle() != null) {
+ messages = getMessageResources(application, request, args[i].getBundle());
+ }
+ values[i] = messages.getMessage(locale, args[i].getKey());
+
+ } else {
+
+ values[i] = args[i].getKey();
+
+ }
+ }
+ }
+
+ return values;
+
}
/**
Modified: struts/core/trunk/src/share/org/apache/struts/validator/validwhen/ValidWhen.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/validator/validwhen/ValidWhen.java?view=diff&r1=159267&r2=159268
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/validator/validwhen/ValidWhen.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/validator/validwhen/ValidWhen.java Mon Mar 28 09:35:46 2005
@@ -117,7 +117,7 @@
errors.add(
field.getKey(),
- Resources.getActionMessage(request, va, field));
+ Resources.getActionMessage(validator, request, va, field));
return false;
}
@@ -125,7 +125,7 @@
if (!valid) {
errors.add(
field.getKey(),
- Resources.getActionMessage(request, va, field));
+ Resources.getActionMessage(validator, request, va, field));
return false;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org