Summary:
- Related to:
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=6
M jsf-api/src/javax/faces/component/UIInput.java
M jsf-api/src/javax/faces/component/UISelectMany.java
M jsf-api/src/javax/faces/component/UISelectOne.java
---- add component label to component level error messages
M jsf-api/test/javax/faces/Messages.properties
---- updated for api tests
M jsf-api/test/javax/faces/component/UIInputTestCase.java
M jsf-api/test/javax/faces/component/UISelectManyTestCase.java
M jsf-api/test/javax/faces/component/UISelectOneTestCase.java
---- modified tests to check for label in message
M jsf-ri/src/javax/faces/Messages.properties
M jsf-ri/src/javax/faces/Messages_de.properties
M jsf-ri/src/javax/faces/Messages_es.properties
M jsf-ri/src/javax/faces/Messages_fr.properties
---- add placeholder for component label in component level messages.
<< ADD DESCRIPTION HERE >>
SECTION: Modified Files
----------------------------
M jsf-api/src/javax/faces/component/UIInput.java
M jsf-api/src/javax/faces/component/UISelectMany.java
M jsf-api/src/javax/faces/component/UISelectOne.java
M jsf-api/test/javax/faces/Messages.properties
M jsf-api/test/javax/faces/component/UIInputTestCase.java
M jsf-api/test/javax/faces/component/UISelectManyTestCase.java
M jsf-api/test/javax/faces/component/UISelectOneTestCase.java
M jsf-ri/src/javax/faces/Messages.properties
M jsf-ri/src/javax/faces/Messages_de.properties
M jsf-ri/src/javax/faces/Messages_es.properties
M jsf-ri/src/javax/faces/Messages_fr.properties
SECTION: Diffs
----------------------------
Index: jsf-api/src/javax/faces/component/UIInput.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/src/javax/faces/component/UIInput.java,v
retrieving revision 1.75
diff -u -r1.75 UIInput.java
--- jsf-api/src/javax/faces/component/UIInput.java 17 Jun 2004 16:50:35 -0000 1.75
+++ jsf-api/src/javax/faces/component/UIInput.java 7 Mar 2005 01:18:28 -0000
@@ -550,7 +550,9 @@
FacesMessage message = null;
if (null == messageStr) {
message =
- MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID);
+ MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(
+ context, this)});
}
else {
message = new FacesMessage(messageStr);
@@ -561,19 +563,25 @@
}
catch (FacesException e) {
FacesMessage message =
- MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID);
+ MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(
+ context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
} catch (IllegalArgumentException e) {
FacesMessage message =
- MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID);
+ MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(
+ context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
} catch (Exception e) {
FacesMessage message =
- MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID);
+ MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(
+ context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
@@ -765,7 +773,9 @@
// If our value is valid, enforce the required property if present
if (isValid() && isRequired() && isEmpty(newValue)) {
FacesMessage message =
- MessageFactory.getMessage(context, REQUIRED_MESSAGE_ID);
+ MessageFactory.getMessage(context, REQUIRED_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(
+ context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
@@ -1082,8 +1092,8 @@
ConverterException ce, Object value) {
FacesMessage message = ce.getFacesMessage();
if (message == null) {
- message = MessageFactory.getMessage(context,
- CONVERSION_MESSAGE_ID);
+ message = MessageFactory.getMessage(context, CONVERSION_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(context, this)});
if (message.getDetail() == null) {
message.setDetail(ce.getMessage());
}
Index: jsf-api/src/javax/faces/component/UISelectMany.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/src/javax/faces/component/UISelectMany.java,v
retrieving revision 1.52
diff -u -r1.52 UISelectMany.java
--- jsf-api/src/javax/faces/component/UISelectMany.java 20 Apr 2004 02:03:21 -0000 1.52
+++ jsf-api/src/javax/faces/component/UISelectMany.java 7 Mar 2005 01:18:28 -0000
@@ -376,7 +376,8 @@
// Enqueue an error message if an invalid value was specified
if (!found) {
FacesMessage message =
- MessageFactory.getMessage(context, INVALID_MESSAGE_ID);
+ MessageFactory.getMessage(context, INVALID_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
Index: jsf-api/src/javax/faces/component/UISelectOne.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/src/javax/faces/component/UISelectOne.java,v
retrieving revision 1.45
diff -u -r1.45 UISelectOne.java
--- jsf-api/src/javax/faces/component/UISelectOne.java 20 Apr 2004 02:03:58 -0000 1.45
+++ jsf-api/src/javax/faces/component/UISelectOne.java 7 Mar 2005 01:18:28 -0000
@@ -116,7 +116,8 @@
// Enqueue an error message if an invalid value was specified
if (!found) {
FacesMessage message =
- MessageFactory.getMessage(context, INVALID_MESSAGE_ID);
+ MessageFactory.getMessage(context, INVALID_MESSAGE_ID,
+ new Object[] {MessageFactory.getLabel(context, this)});
message.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(getClientId(context), message);
setValid(false);
Index: jsf-api/test/javax/faces/Messages.properties
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/test/javax/faces/Messages.properties,v
retrieving revision 1.4
diff -u -r1.4 Messages.properties
--- jsf-api/test/javax/faces/Messages.properties 5 Feb 2004 05:04:14 -0000 1.4
+++ jsf-api/test/javax/faces/Messages.properties 7 Mar 2005 01:18:28 -0000
@@ -45,10 +45,10 @@
javax.faces.validator.LengthValidator.LIMIT=Validation Error: Specified attribute cannot be converted to proper type.
javax.faces.validator.LengthValidator.MAXIMUM=Validation Error: Value is greater than allowable maximum of ''{0}''.
javax.faces.validator.LengthValidator.MINIMUM=Validation Error: Value is less than allowable minimum of ''{0}''.
-javax.faces.component.UIInput.CONVERSION=Conversion error during model data update
-javax.faces.component.UIInput.REQUIRED=Validation Error: Value is required.
-javax.faces.component.UISelectOne.INVALID=Validation Error: Value is not valid.
-javax.faces.component.UISelectMany.INVALID=Validation Error: Value is not valid.
+javax.faces.component.UIInput.CONVERSION={0}: Conversion error during model data update
+javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required.
+javax.faces.component.UISelectOne.INVALID={0}: Validation Error: Value is not valid.
+javax.faces.component.UISelectMany.INVALID={0}: Validation Error: Value is not valid.
javax.faces.validator.RequiredValidator.FAILED=Validation Error: Value is required.
javax.faces.validator.LongRangeValidator.LIMIT=Validation Error: Specified attribute cannot be converted to proper type.
javax.faces.validator.LongRangeValidator.MAXIMUM=Validation Error: Value is greater than allowable maximum of ''{0}''.
Index: jsf-api/test/javax/faces/component/UIInputTestCase.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/test/javax/faces/component/UIInputTestCase.java,v
retrieving revision 1.34
diff -u -r1.34 UIInputTestCase.java
--- jsf-api/test/javax/faces/component/UIInputTestCase.java 7 Apr 2004 17:39:26 -0000 1.34
+++ jsf-api/test/javax/faces/component/UIInputTestCase.java 7 Mar 2005 01:18:29 -0000
@@ -408,11 +408,18 @@
checkMessages(0);
assertTrue(input.isValid());
+ input.getAttributes().put("label", "mylabel");
input.setValid(true);
input.setSubmittedValue("");
input.validate(facesContext);
checkMessages(1);
assertTrue(!input.isValid());
+
+ Iterator messages = facesContext.getMessages();
+ while (messages.hasNext()) {
+ FacesMessage message = (FacesMessage) messages.next();
+ assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+ }
input.setValid(true);
input.setSubmittedValue(null);
Index: jsf-api/test/javax/faces/component/UISelectManyTestCase.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/test/javax/faces/component/UISelectManyTestCase.java,v
retrieving revision 1.27
diff -u -r1.27 UISelectManyTestCase.java
--- jsf-api/test/javax/faces/component/UISelectManyTestCase.java 12 Jul 2004 14:26:05 -0000 1.27
+++ jsf-api/test/javax/faces/component/UISelectManyTestCase.java 7 Mar 2005 01:18:29 -0000
@@ -13,12 +13,14 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import javax.faces.application.FacesMessage;
import javax.faces.el.ValueBinding;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -185,11 +187,19 @@
assertTrue(selectMany.isValid());
// Validate one value on the list and one not on the list
+ selectMany.getAttributes().put("label", "mylabel");
selectMany.setValid(true);
selectMany.setSubmittedValue(new Object[] { "bar", "bop"});
selectMany.setRendererType(null); // We don't have any renderers
selectMany.validate(facesContext);
assertTrue(!selectMany.isValid());
+
+ Iterator messages = facesContext.getMessages();
+ while (messages.hasNext()) {
+ FacesMessage message = (FacesMessage) messages.next();
+ assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+ }
+
}
Index: jsf-api/test/javax/faces/component/UISelectOneTestCase.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-api/test/javax/faces/component/UISelectOneTestCase.java,v
retrieving revision 1.23
diff -u -r1.23 UISelectOneTestCase.java
--- jsf-api/test/javax/faces/component/UISelectOneTestCase.java 12 Jul 2004 14:26:05 -0000 1.23
+++ jsf-api/test/javax/faces/component/UISelectOneTestCase.java 7 Mar 2005 01:18:29 -0000
@@ -13,11 +13,13 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import javax.faces.application.FacesMessage;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -117,11 +119,16 @@
assertTrue(selectOne.isValid());
// Validate a value that is not on the list
+ selectOne.getAttributes().put("label", "mylabel");
selectOne.setValid(true);
selectOne.setSubmittedValue("bop");
selectOne.validate(facesContext);
assertTrue(!selectOne.isValid());
-
+ Iterator messages = facesContext.getMessages();
+ while (messages.hasNext()) {
+ FacesMessage message = (FacesMessage) messages.next();
+ assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+ }
}
// Test validation of component with UISelectItems pointing to map
Index: jsf-ri/src/javax/faces/Messages.properties
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages.properties,v
retrieving revision 1.22
diff -u -r1.22 Messages.properties
--- jsf-ri/src/javax/faces/Messages.properties 24 Feb 2005 15:22:34 -0000 1.22
+++ jsf-ri/src/javax/faces/Messages.properties 7 Mar 2005 01:18:31 -0000
@@ -46,10 +46,10 @@
# Component Errors
# ==============================================================================
-javax.faces.component.UIInput.CONVERSION=Conversion error occurred.
-javax.faces.component.UIInput.REQUIRED=Validation Error: Value is required.
-javax.faces.component.UISelectOne.INVALID=Validation Error: Value is not valid
-javax.faces.component.UISelectMany.INVALID=Validation Error: Value is not valid
+javax.faces.component.UIInput.CONVERSION={0}: Conversion error occurred.
+javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required.
+javax.faces.component.UISelectOne.INVALID={0}: Validation Error: Value is not valid
+javax.faces.component.UISelectMany.INVALID={0}: Validation Error: Value is not valid
# ==============================================================================
# Converter Errors
Index: jsf-ri/src/javax/faces/Messages_de.properties
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_de.properties,v
retrieving revision 1.21
diff -u -r1.21 Messages_de.properties
--- jsf-ri/src/javax/faces/Messages_de.properties 24 Feb 2005 15:22:34 -0000 1.21
+++ jsf-ri/src/javax/faces/Messages_de.properties 7 Mar 2005 01:18:32 -0000
@@ -85,9 +85,9 @@
javax.faces.validator.LengthValidator.LIMIT=Validierungs-Fehler: Spezifiziertes Attribut kann nicht in korrekten Typ umgewandelt werden.
javax.faces.validator.LengthValidator.MAXIMUM={1}: Validierungs-Fehler: Wert ist gr\u00F6\u00DFer als zul\u00E4ssiges Maximum ''{0}''.
javax.faces.validator.LengthValidator.MINIMUM={1}: Validierungs-Fehler: Wert ist kleiner als zul\u00E4ssiges Minimum ''{0}''.
-javax.faces.component.UIInput.REQUIRED=Validierungs-Fehler: Wert wird ben\u00F6tigt.
-javax.faces.component.UISelectOne.INVALID=Validierungs-Fehler: Wert nicht g\u00F6ltig.
-javax.faces.component.UISelectMany.INVALID=Validierungs-Fehler: Wert nicht g\u00F6ltig.
+javax.faces.component.UIInput.REQUIRED={0}: Validierungs-Fehler: Wert wird ben\u00F6tigt.
+javax.faces.component.UISelectOne.INVALID={0}: Validierungs-Fehler: Wert nicht g\u00F6ltig.
+javax.faces.component.UISelectMany.INVALID={0}: Validierungs-Fehler: Wert nicht g\u00F6ltig.
javax.faces.validator.RequiredValidator.FAILED=Validierungs-Fehler: Wert wird ben\u00F6tigt.
javax.faces.validator.LongRangeValidator.LIMIT=Validierungs-Fehler: Spezifiziertes Attribut kann nicht in korrekten Typ umgewandelt werden.
javax.faces.validator.LongRangeValidator.MAXIMUM={1}: Validierungs-Fehler: Wert ist gr\u00F6\u00DFer als zul\u00E4ssiges Maximum ''{0}''.
Index: jsf-ri/src/javax/faces/Messages_es.properties
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_es.properties,v
retrieving revision 1.21
diff -u -r1.21 Messages_es.properties
--- jsf-ri/src/javax/faces/Messages_es.properties 24 Feb 2005 15:22:34 -0000 1.21
+++ jsf-ri/src/javax/faces/Messages_es.properties 7 Mar 2005 01:18:32 -0000
@@ -85,9 +85,9 @@
javax.faces.validator.LengthValidator.LIMIT=Error de Validaci\u00f3n: No puede ser convertido specificado atributo al proprio tipo.
javax.faces.validator.LengthValidator.MAXIMUM={1}: Error de Validaci\u00F3n: Valor es m\u00E1s grande de valor de m\u00E1ximo permitido: ''{0}''.
javax.faces.validator.LengthValidator.MINIMUM={1}: Error de Validaci\u00F3n: Valor is menos de valor de m\u00EDnimo permitido: ''{0}''.
-javax.faces.component.UIInput.REQUIRED=Error de Validaci\u00F3n: Valor es necesario.
-javax.faces.component.UISelectOne.INVALID=Error de Validaci\u00F3n: Valor no es correcto.
-javax.faces.component.UISelectMany.INVALID=Error de Validaci\u00F3n: Valor no es correcto.
+javax.faces.component.UIInput.REQUIRED={0}: Error de Validaci\u00F3n: Valor es necesario.
+javax.faces.component.UISelectOne.INVALID={0}: Error de Validaci\u00F3n: Valor no es correcto.
+javax.faces.component.UISelectMany.INVALID={0}: Error de Validaci\u00F3n: Valor no es correcto.
javax.faces.validator.RequiredValidator.FAILED=Error de Validaci\u00f3n: Valor es necesario.
javax.faces.validator.LongRangeValidator.LIMIT=Error de Validaci\u00f3n: No puede ser convertido specificado atributo al proprio tipo.
javax.faces.validator.LongRangeValidator.MAXIMUM={1}: Error de Validaci\u00F3n: Valor es m\u00E1s grande de valor de m\u00E1ximo permitido: ''{0}''.
Index: jsf-ri/src/javax/faces/Messages_fr.properties
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_fr.properties,v
retrieving revision 1.20
diff -u -r1.20 Messages_fr.properties
--- jsf-ri/src/javax/faces/Messages_fr.properties 24 Feb 2005 15:22:34 -0000 1.20
+++ jsf-ri/src/javax/faces/Messages_fr.properties 7 Mar 2005 01:18:32 -0000
@@ -84,9 +84,9 @@
javax.faces.validator.LengthValidator.LIMIT=Erreur de validation: Attribut sp\u00e9cifi\u00e9 ne peut etre converti \u00b4 un type appropri\u00e9.
javax.faces.validator.LengthValidator.MAXIMUM={1}: Erreur de validation\: La valeur sp\u00E9cifi\u00E9e est sup\u00E9rieure \u00B4 la valeur maximale permise ''{0}''.
javax.faces.validator.LengthValidator.MINIMUM={1}: Erreur de validation\: La valeur sp\u00E9cifi\u00E9e est inf\u00E9rieure \u00B4 la valeur minimale permise ''{0}''.
-javax.faces.component.UIInput.REQUIRED=Erreur de validation\: Valeur requise.
-javax.faces.component.UISelectOne.INVALID=Erreur de validation\: Valeur not valid.
-javax.faces.component.UISelectMany.INVALID=Erreur de validation\: Valeur not valid.
+javax.faces.component.UIInput.REQUIRED={0}: Erreur de validation\: Valeur requise.
+javax.faces.component.UISelectOne.INVALID={0}: Erreur de validation\: Valeur not valid.
+javax.faces.component.UISelectMany.INVALID={0}: Erreur de validation\: Valeur not valid.
javax.faces.validator.RequiredValidator.FAILED=Erreur de validation: Valeur requise.
javax.faces.validator.LongRangeValidator.LIMIT=Erreur de validation: Attribut sp\u00e9cifi\u00e9 ne peut etre converti \u00b4 un type appropri\u00e9
javax.faces.validator.LongRangeValidator.MAXIMUM={1}: Erreur de validation\: La valeur sp\u00E9cifi\u00E9e est sup\u00E9rieure \u00B4 la valeur maximale permise ''{0}''.