Git Product home page Git Product logo

Comments (18)

glassfishrobot avatar glassfishrobot commented on September 17, 2024

Reported by @edburns

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
reassign

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

rogerk said:
Ed Burns wrote:

Comments inline (where else would they be?)

On Mon, 18 Oct 2004 10:04:54 -0700, Adam Winer [email protected] said:

AW> A question from a member of my team prompts me to make an
AW> alternate proposal for the "MethodBinding": instead of
AW> using EL to generate MethodBindings to ActionListeners, Validators,
AW> etc., use EL to locate instances of these classes, e.g.,

AW> public class ConfiguredStuff
AW> {
AW> public Validator getCurrencyValidator()

{ ... }

AW> public Converter getSsnConverter() { ... }

AW> }

AW> <h:inputText>
AW> <f:validator instance="#

{configured.currencyValidator}"/>

AW> <f:converter instance="#{configured.ssnConverter}"/>
AW> </h:inputText>

AW> Disadvantages:
AW> (1) More work for a one-off validator/listener/etc.
AW> (2) Can't define multiple validators, etc., in a single class
AW> without using inner classes.
AW> (3) Can only use one "MethodBinding" validator/listener per
AW> component (since MethodBindings would only be available
AW> as component properties).
AW> (4) Some inconsistency; in an example like:
AW> <h:inputText validator="#{backingBean.wackyValidator">
AW> <f:validator instance="#{configured.currencyValidator}

"/>

AW> </h:inputText>
AW> ... you'd access "wackyValidator" differently than
AW> "currencyValidator".

Harold> I'm still getting up to speed, so forgive me if this is an ignorant
HA> question but, is there a reason why we can do this:

HA> <h:inputText validatorInstance="#

{configured.wackyValidator}

">

HA> <f:validator instance="#

{configured.currencyValidator}

"/>

HA> </h:inputText>

HA> This would remove disadvantage 4, correct?

AW> Only in part, since we'd certainly have to continue to support
AW> "validator" as an attribute on <h:inputText>. It'd also be
AW> a rather funky attribute, because it would (necessarily) end
AW> up calling addValidator() (instead of setValidator()).

AW> I'd be deeply uncomfortable having an attribute of a tag -
AW> so far, is always mirrored on the component as setting a property -
AW> result in an "add" operation. "add" operations are currently
AW> always modeled as child tags, which is a good thing.

Also, Harold, at a more fundamental level, we want to minimize how much
we change the semantics of the tag attributes.

Roger> Can we look at it from the perspective that one approach is a
RK> "method-based" approach and the other is a "class-based" approach?
RK> So maybe we don't have to look at it so much as an "inconsistency",
RK> but just as another way for developers to specify JSF validators?
RK> This new proposal is very similar to component binding...

I propose we scrap the previous proposal to have a type attribute that
is a MethodBinding that points to a method that performs validation,
etc, in favor of adding the "binding" attribute. Formally:

Add a "binding" attribute to the following tags:

<f:actionListener>
<f:valueChangeListener>
<f:validator>
<f:converter>

This works exactly like the "binding" attribute on the component tags.
Now, I know that it's not semantically just the same since the f: tags
expressly don't map to UIComponent instances, but there's no reason why
they can't map to actionListener, valueChangeListener, validator, or
converter instances. Furthermore, this would cause the instance to be
added to the enclosing parent, where no such behavior exists in the h:
binding case. Of course, we could change the name of the attribute to
reflect this difference by calling it "instance" as Adam suggested. I
think this mechanism is "close enough" to being a binding such that it
would be more confusing to introduce the "instance" attribute.

Hrm. The semantics are a bit different, since there's no
"set-if-getter-returns-null" here. I can imagine that if someone
wrote:

<f:validator id="foo" binding="#

{myBean.validator}

"/>

... they'd expect to create the "foo" validator, then
call setValidator() on myBean to push it in.

OTOH, I hate inventing a new word when one already exists that basically
works, and "binding" is such a word.

Would there be anything wrong with just supporting the full set
of "binding" semantics? This'd also dodge the question of
mutual exclusivity. So, for example, for <f:validator>:

  • If "binding" is set, it is converted into a ValueBinding instance
    that must be of type javax.faces.validator.Validator, or a subtype
    thereof.
  • Evaluation proceeds as follows:
    (1) If "binding" is set, getValue() is called on the ValueBinding. If
    it returns a non-null value, that is used as the Validator instance,
    and execution continues at step 3.
    (2) Else if "id" is set, that value is used for a call to
    Application.createValidator(). If "binding" is set, setValue()
    is called on its ValueBinding with this new instance.
    (3) If no Validator has yet been produced, a JspException is thrown. If
    the parent component is not an instance of EditableValueHolder,
    a JspException is thrown. Otherwise, the validator is added to
    the parent component using EditableValueHolder.addValidator().

(I'm not worried about an inconsistency w/r to adding the instance to the
enclosing parent, since that in fact does happen with component instances.
They're added to their parent component.)

The most significant inconsistency I see is that I assume "binding" is used most
often in "set" mode on components, but will be used most often in "get" mode for
these tags. But at least both are feasible.

If we went this route, a reasonable question would be whether "binding" should
be supported on all validator and converter tags, and I can't see why not.

– Adam

Ed Burns wrote:

On Tue, 19 Oct 2004 08:47:18 -0700, Adam Winer [email protected] said:

AW> Ed Burns wrote:
AW> Would there be anything wrong with just supporting the full set
AW> of "binding" semantics? This'd also dodge the question of
AW> mutual exclusivity. So, for example, for <f:validator>:

AW> - If "binding" is set, it is converted into a ValueBinding instance
AW> that must be of type javax.faces.validator.Validator, or a subtype
AW> thereof.
AW> - Evaluation proceeds as follows:
AW> (1) If "binding" is set, getValue() is called on the ValueBinding. If
AW> it returns a non-null value, that is used as the Validator instance,
AW> and execution continues at step 3.
AW> (2) Else if "id" is set, that value is used for a call to
AW> Application.createValidator(). If "binding" is set, setValue()
AW> is called on its ValueBinding with this new instance.
AW> (3) If no Validator has yet been produced, a JspException is thrown. If
AW> the parent component is not an instance of EditableValueHolder,
AW> a JspException is thrown. Otherwise, the validator is added to
AW> the parent component using EditableValueHolder.addValidator().

AW> (I'm not worried about an inconsistency w/r to adding the instance to the
AW> enclosing parent, since that in fact does happen with component instances.
AW> They're added to their parent component.)

I like this idea.

AW> The most significant inconsistency I see is that I assume "binding"
AW> is used most often in "set" mode on components, but will be used
AW> most often in "get" mode for these tags. But at least both are
AW> feasible.

I disagree that it's used in "get" mode on components. I thought the
whole point was to allow your managed-bean to have a JavaBeans property
that is the UIComponent instance which should be bound to the tag.

I just meant that, most of the time I use "binding", I let the
tag create the component (though I think that Studio Creator
creates the components in the bean, which I find kinda gross).
With this use of "binding", I'd usually let the bean create the
validator/converter/listener. But it's no big thing.

AW> If we went this route, a reasonable question would be whether
AW> "binding" should be supported on all validator and converter tags,
AW> and I can't see why not.

I agree. Why not.

– Adam

Adam Winer wrote:

Ed Burns wrote:

On Tue, 19 Oct 2004 08:47:18 -0700, Adam Winer
[email protected] said:

AW> Ed Burns wrote:
AW> Would there be anything wrong with just supporting the full set
AW> of "binding" semantics? This'd also dodge the question of
AW> mutual exclusivity. So, for example, for <f:validator>:

AW> - If "binding" is set, it is converted into a ValueBinding instance
AW> that must be of type javax.faces.validator.Validator, or a
subtype
AW> thereof.
AW> - Evaluation proceeds as follows:
AW> (1) If "binding" is set, getValue() is called on the
ValueBinding. If
AW> it returns a non-null value, that is used as the Validator
instance,
AW> and execution continues at step 3.
AW> (2) Else if "id" is set, that value is used for a call to
AW> Application.createValidator(). If "binding" is set,
setValue()
AW> is called on its ValueBinding with this new instance.
AW> (3) If no Validator has yet been produced, a JspException is
thrown. If
AW> the parent component is not an instance of
EditableValueHolder,
AW> a JspException is thrown. Otherwise, the validator is
added to
AW> the parent component using
EditableValueHolder.addValidator().

AW> (I'm not worried about an inconsistency w/r to adding the
instance to the
AW> enclosing parent, since that in fact does happen with component
instances.
AW> They're added to their parent component.)

I like this idea.

+1 I like the idea of not having to introduce yet another attribute. I
have no problem
expanding the scope of "binding" to validators, converters, etc.

AW> The most significant inconsistency I see is that I assume "binding"
AW> is used most often in "set" mode on components, but will be used
AW> most often in "get" mode for these tags. But at least both are
AW> feasible.

I disagree that it's used in "get" mode on components. I thought the
whole point was to allow your managed-bean to have a JavaBeans property
that is the UIComponent instance which should be bound to the tag.

I just meant that, most of the time I use "binding", I let the
tag create the component (though I think that Studio Creator
creates the components in the bean, which I find kinda gross).
With this use of "binding", I'd usually let the bean create the
validator/converter/listener. But it's no big thing.

AW> If we went this route, a reasonable question would be whether
AW> "binding" should be supported on all validator and converter tags,
AW> and I can't see why not.

I agree. Why not.

Makes sense for consistency.

– Adam

I'd like to reach concensus on this today - so if anyone has anything to
add, please
do so today. Otherwise, we'll run with this proposal.

Thanks, Roger.

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

rogerk said:
Created an attachment (id=4)
Differences and New Files For Issue 21.

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

rogerk said:
This is the first part of implementation for this issue.
The rest will be done in a subsequent checkin (ri changes that deal with
core tag changes and TLV changes).

**jsf-api **

M build.xml

  • create MessageFactory in webapp package
    M src/javax/faces/webapp/ConverterTag.java
    M src/javax/faces/webapp/ValidatorTag.java

  • added "binding" attribute and additional logic for creating
    the converter/instance

  • jsf-ri **

M src/javax/faces/Messages.properties

  • added new messages

Index: build.xml

RCS file: /cvs/javaserverfaces-sources/jsf-api/build.xml,v
retrieving revision 1.136
diff -u -r1.136 build.xml
— build.xml 8 Nov 2004 20:15:57 -0000 1.136
+++ build.xml 11 Nov 2004 14:56:17 -0000
@@ -292,6 +292,11 @@
todir="$

{build.generate}/javax/faces/validator"
filtering="true"/>

  • <copy file="${jsf-tools.dir}/template-src/MessageFactory.java"
  • todir="${build.generate}

/javax/faces/webapp"

  • filtering="true"/>

Index: ConverterTag.java

RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/webapp/ConverterTag.java,v
retrieving revision 1.10
diff -u -r1.10 ConverterTag.java
— ConverterTag.java 26 Feb 2004 20:31:19 -0000 1.10
+++ ConverterTag.java 11 Nov 2004 14:54:53 -0000
@@ -9,9 +9,12 @@

package javax.faces.webapp;

-import javax.faces.component.ValueHolder;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
@@ -20,9 +23,8 @@
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

-import javax.faces.application.ApplicationFactory;
-import javax.faces.application.Application;
-import javax.faces.FactoryFinder;
+
+

@@ -61,11 +63,22 @@

// -------------------------------------------------------------- Attributes

  • public static final String INVALID_EXPRESSION_MESSAGE_ID =
    "javax.faces.webapp.INVALID_EXPRESSION";
  • public static final String COMPONENT_FROM_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.COMPONENT_FROM_TAG_ERROR";
  • public static final String NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR";
  • public static final String NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR";
  • public static final String CANT_CREATE_CLASS_ID =
    "javax.faces.webapp.CANT_CREATE_CLASS";

/**

  • The identifier of the {@link Converter} instance to be created.

    */ private String converterId = null;
    • /**
      • The {@link ValueBinding} expression that evaluates to an object that

      • implements {@link Converter}

    .

    • */
    • private String binding = null;

/**

  • Set the identifer of the {@link Converter} instance to be created. @@ -79,7 +92,27 @@

    }

    • /*
      • Set the value binding expression of the {@link Converter}

    instance to
    be created.

      • @param binding The new value binding expression
      • @throws JspException if a JSP error occurs
    • */
    • public void setBinding(String binding)
    • throws JspException {
    • if (binding!= null && !UIComponentTag.isValueReference(binding))

    Unknown macro: {+ Object[] params = {binding};

    • FacesMessage message = MessageFactory.getMessage(
    • INVALID_EXPRESSION_MESSAGE_ID, params);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Invalid Expression:"+binding); + }
    • }
    • this.binding = binding;
    • }
      // ---------------------------------------------------------- Public Methods

    @@ -94,11 +127,21 @@
    */
    public int doStartTag() throws JspException {

    • Converter converter = null;

    // Locate our parent UIComponentTag
    UIComponentTag tag =
    UIComponentTag.getParentUIComponentTag(pageContext);
    if (tag == null) { // PENDING - i18n

    • throw new JspException("Not nested in a UIComponentTag");
    • Object[] params = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ + this.getClass().getName()); + }
      }

    // Nothing to do unless this tag created a component
    @@ -106,28 +149,74 @@
    return (SKIP_BODY);
    }

    • // Create and register an instance with the appropriate component
    • Converter converter = createConverter();
    • ValueHolder vh = ((ValueHolder) tag.getComponentInstance());
    • UIComponent component = tag.getComponentInstance();
    • if (component == null) {
    • FacesMessage message = MessageFactory.getMessage(
    • COMPONENT_FROM_TAG_ERROR_MESSAGE_ID, null);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Can't create Component from tag."); + }
    • }
    • if (!(component instanceof ValueHolder)) {
    • Object params [] = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ + this.getClass().getName()); + }
    • }
    • converter = createConverter();
    • if (converter == null) {
    • String converterError = null;
    • if (binding != null) { + converterError = binding; + }
    • if (converterId != null) {
    • if (converterError != null) { + converterError += "or " + converterId; + } else { + converterError = converterId; + }
    • }
    • Object params [] = {"javax.faces.convert.Converter",converterError};
    • FacesMessage message = MessageFactory.getMessage(
    • CANT_CREATE_CLASS_ID, params);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Can't create class of type:"+ + "javax.faces.convert.Converter for:"+converterError); + }
    • }
    • ValueHolder vh = (ValueHolder)component;
    • FacesContext context = FacesContext.getCurrentInstance();
    • // Register an instance with the appropriate component
      vh.setConverter(converter);

    // Once the converter has been set, attempt to convert the
    // incoming "value"
    Object localValue = vh.getLocalValue();
    if (localValue instanceof String) {
    try { - FacesContext context = FacesContext.getCurrentInstance(); - localValue = converter.getAsObject(context, - (UIComponent) vh, - (String) localValue); + localValue = converter.getAsObject(context, (UIComponent)vh, (String) localValue); vh.setValue(localValue); }
    catch (ConverterException ce) { // PENDING - Ignore? Throw an exception? Set the local // value back to "null" and log a warning? }

    • }
    • }

    return (SKIP_BODY);

    }
    @@ -143,6 +232,10 @@
    }

    • private void convertValue(FacesContext context, ValueHolder vh,
    • Converter converter) { + + }
      // ------------------------------------------------------- Protected Methods

    @@ -155,19 +248,46 @@
    protected Converter createConverter()
    throws JspException {

    • try {
    • FacesContext context = FacesContext.getCurrentInstance();
    • String converterIdVal = converterId;
    • if (UIComponentTag.isValueReference(converterId)) { - ValueBinding vb = - context.getApplication().createValueBinding(converterId); - converterIdVal = (String) vb.getValue(context); - }
    • return (context.getApplication().createConverter(converterIdVal));
    • } catch (Exception e) {
    • throw new JspException(e);
    • FacesContext context = FacesContext.getCurrentInstance();
    • Converter converter = null;
    • ValueBinding vb = null;
    • // If "binding" is set, use it to create a converter instance.
    • if (binding != null) {
    • vb = context.getApplication().createValueBinding(binding);
    • if (vb != null) {
    • try {
    • converter = (Converter)vb.getValue(context);
    • if (converter != null) { + return converter; + }
    • } catch (Exception e) { + throw new JspException(e); + }
    • }
      }
    • // If "converterId" is set, use it to create the converter
    • // instance. If "converterId" and "binding" are both set, store the
    • // converter instance in the value of the property represented by
    • // the value binding expression.
    • if (converterId != null) {
    • try {
    • String converterIdVal = converterId;
    • if (UIComponentTag.isValueReference(converterId)) { + ValueBinding idBinding = + context.getApplication().createValueBinding(converterId); + converterIdVal = (String) idBinding.getValue(context); + }
    • converter =
      context.getApplication().createConverter(converterIdVal);
    • if (converter != null) {
    • if (vb != null) { + vb.setValue(context, converter); + }
    • }
    • } catch (Exception e) { + throw new JspException(e); + }
    • }
    • return converter;
      }

    }

    Index: ValidatorTag.java

    RCS file:
    /cvs/javaserverfaces-sources/jsf-api/src/javax/faces/webapp/ValidatorTag.java,v
    retrieving revision 1.16
    diff -u -r1.16 ValidatorTag.java
    — ValidatorTag.java 26 Feb 2004 20:31:21 -0000 1.16
    +++ ValidatorTag.java 11 Nov 2004 14:55:33 -0000
    @@ -9,20 +9,20 @@

    package javax.faces.webapp;

    -import javax.faces.component.UIComponent;
    +import javax.faces.FactoryFinder;
    +import javax.faces.application.Application;
    +import javax.faces.application.ApplicationFactory;
    +import javax.faces.application.FacesMessage;
    import javax.faces.component.EditableValueHolder;
    +import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.el.ValueBinding;
    import javax.faces.validator.Validator;
    +import javax.faces.webapp.UIComponentTag;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.Tag;
    import javax.servlet.jsp.tagext.TagSupport;

    -import javax.faces.application.ApplicationFactory;
    -import javax.faces.application.Application;
    -import javax.faces.FactoryFinder;

    /**
    @@ -60,11 +60,22 @@

    // ------------------------------------------------------------- Attributes

    • public static final String INVALID_EXPRESSION_MESSAGE_ID =
      "javax.faces.webapp.INVALID_EXPRESSION";
    • public static final String COMPONENT_FROM_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.COMPONENT_FROM_TAG_ERROR";
    • public static final String NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR";
    • public static final String NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR";
    • public static final String CANT_CREATE_CLASS_ID =
      "javax.faces.webapp.CANT_CREATE_CLASS";

    /**

    • The identifier of the {@link Validator} instance to be created.

    */
    private String validatorId = null;

    • /**
      • The {@link ValueBinding} expression that evaluates to an object that

      • implements {@link Validator}.

    • */
    • private String binding = null;

    /**

    • Set the identifer of the {@link Validator} instance to be created.

    @@ -78,7 +89,28 @@

    }

    • /*
      • Set the value binding expression of the {@link Validator} instance

      • to be created.

      • @param binding The new value binding expression
      • @throws JspException if a JSP error occurs
    • */
    • public void setBinding(String binding)
    • throws JspException {
    • if (binding != null && !UIComponentTag.isValueReference(binding)) {
    • Object[] params = {binding};+ FacesMessage message = MessageFactory.getMessage(+ INVALID_EXPRESSION_MESSAGE_ID, params);+ if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Invalid Expression:"+binding); + }
    • }
    • this.binding = binding;
    • }
      // --------------------------------------------------------- Public Methods

    @@ -92,22 +124,81 @@

    • @exception JspException if a JSP error occurs
      */
      public int doStartTag() throws JspException {
    • Validator validator = null;

    // Locate our parent UIComponentTag
    UIComponentTag tag =
    UIComponentTag.getParentUIComponentTag(pageContext);

    • if (tag == null) { // PENDING - i18n
    • throw new JspException("Not nested in a UIComponentTag");
    • if (tag == null) {
    • Object[] params = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { + throw new JspException(message.getSummary()); + } else { + throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ + this.getClass().getName()); + } }

// Nothing to do unless this tag created a component
if (!tag.getCreated())

{ return (SKIP_BODY); }

  • UIComponent component = tag.getComponentInstance();
  • if (component == null) {
  • FacesMessage message = MessageFactory.getMessage(
  • COMPONENT_FROM_TAG_ERROR_MESSAGE_ID, null);
  • if (message != null)

{ + throw new JspException(message.getSummary()); + } else { + throw new JspException("Can't create Component from tag."); + }

  • }
  • if (!(component instanceof EditableValueHolder)) {
  • Object params [] = {this.getClass().getName()};
  • FacesMessage message = MessageFactory.getMessage(
  • NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID, params);
  • if (message != null) { + throw new JspException(message.getSummary()); + }

else

{ + throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ + this.getClass().getName()); + }

  • }
  • // Create and register an instance with the appropriate component

  • Validator validator = createValidator();

  • ((EditableValueHolder) tag.getComponentInstance()).addValidator(validator);

    • validator = createValidator();

    • if (validator == null) {

    • String validateError = null;

    • if (binding != null) { + validateError = binding; + }

    • if (validatorId != null)

    Unknown macro: {+ if (validateError != null) { + validateError += "or " + validatorId; + } else { + validateError = validatorId; + }+ }

    • Object params [] =

    {"javax.faces.validator.Validator",validateError}

    ;

    • FacesMessage message = MessageFactory.getMessage(
    • CANT_CREATE_CLASS_ID, params);
    • if (message != null)

    { + throw new JspException(message.getSummary()); + }

    else

    { + throw new JspException("Can't create class of type:"+ + "javax.faces.validator.Validator from:"+validateError); + }

    • }
    • // Register an instance with the appropriate component
    • ((EditableValueHolder)component).addValidator(validator);

    return (SKIP_BODY);

}
@@ -134,19 +225,47 @@
*/
protected Validator createValidator()
throws JspException {

  • try {

  • FacesContext context = FacesContext.getCurrentInstance();

  • String validatorIdVal = validatorId;

  • if (UIComponentTag.isValueReference(validatorId)) { - ValueBinding vb = - context.getApplication().createValueBinding(validatorId); - validatorIdVal = (String) vb.getValue(context); - }

  • return (context.getApplication().createValidator(validatorIdVal));

  • } catch (Exception e) {

  • throw new JspException(e);
    +

    • FacesContext context = FacesContext.getCurrentInstance();
    • Validator validator = null;
    • ValueBinding vb = null;
    • // If "binding" is set, use it to create a validator instance.
    • if (binding != null) {
    • vb = context.getApplication().createValueBinding(binding);
    • if (vb != null) {
    • tryUnknown macro: {+ validator = (Validator)vb.getValue(context);+ if (validator != null) { + return validator; + }+ }

    catch (Exception e)

    { + throw new JspException(e); + }

    • }
    • }
    • // If "validatorId" is set, use it to create the validator
    • // instance. If "validatorId" and "binding" are both set, store the
    • // validator instance in the value of the property represented by
    • // the value binding expression.
    • if (validatorId != null) {
    • try {
    • String validatorIdVal = validatorId;
    • if (UIComponentTag.isValueReference(validatorId))

    { + ValueBinding idBinding = context.getApplication().createValueBinding(validatorId); + validatorIdVal = (String)idBinding.getValue(context); + }

    • validator =
      context.getApplication().createValidator(validatorIdVal);
    • if (validator != null)

    Unknown macro: {+ if (vb != null) { + vb.setValue(context, validator); + }+ }

    • } catch (Exception e)

    { + throw new JspException(e); + }

    }

    • return validator;
      }

Index: Messages.properties

RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages.properties,v
retrieving revision 1.17
diff -u -r1.17 Messages.properties
— Messages.properties 26 Jul 2004 21:12:45 -0000 1.17
+++ Messages.properties 11 Nov 2004 15:00:30 -0000
@@ -65,6 +65,20 @@
javax.faces.validator.LongRangeValidator.MINIMUM=Validation Error: Value is
less than allowable minimum of ''

{0}''
javax.faces.validator.LongRangeValidator.TYPE=Validation Error: Value is not of the
correct type.

+# ==============================================================================
+# Webapp Errors
+# ==============================================================================
+javax.faces.webapp.INVALID_EXPRESSION=Invalid expression: ''{0}

''.
+javax.faces.webapp.COMPONENT_FROM_TAG_ERROR=Can''t create Component from tag.
+javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
Error for tag with handler class: ''

{0}''.
+javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper type:
Error for tag with handler class: ''{0}

''.
+javax.faces.webapp.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''

{0}''
from: ''{1}''.
+javax.faces.webapp.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}

''.
+
+
+
+
+javax.faces.webapp.INVALID_PARENT_COMPONENT=Parent component must be type: ''

{0}''.

==============================================================================

IMPLEMENTATION DEFINED MESSAGES

@@ -74,6 +88,7 @@
com.sun.faces.ATTRIBUTE_NOT_SUPORTED=Attribute ''{0}

'' not supported for
component type ''

{1}''.
com.sun.faces.CANT_CONVERT_VALUE=Can''t convert property: ''{0}'' to value
type: ''{1}

''.
com.sun.faces.CANT_CLOSE_INPUT_STREAM=Unable to close input stream.
+com.sun.faces.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''

{0}'' from
''{1}''.
com.sun.faces.CANT_CREATE_LIFECYCLE_ERROR=Can''t create Lifecycle for id: ''{0}

''.
com.sun.faces.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''

{0}''.
com.sun.faces.CANT_INTROSPECT_CLASS=Can''t introspect class: ''{0}

''
@@ -111,6 +126,7 @@
com.sun.faces.MODELUPDATE_ERROR=Model Update failure for value ''

{0}'' in
model''{1}''.
com.sun.faces.NAMED_OBJECT_NOT_FOUND_ERROR=Expression Error: Named Object:
''{0}

'' not found.
com.sun.faces.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
Error for tag with handler class: ''

{0}''.
+com.sun.faces.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper type:
Error for tag with handler class: ''{0}

''.
com.sun.faces.NO_DTD_FOUND_ERROR=Unable to locate DTD with PUBLIC ID ''

{0}'' at
path ''{1}''.
com.sun.faces.NULL_BODY_CONTENT_ERROR=BodyContent is null for tag with handler
class: ''{0}

''.
com.sun.faces.NULL_COMPONENT_ERROR=Construction Error: Component argument is null.

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

rogerk said:
Back out i18n messages until EG discussion on them.

M src/javax/faces/webapp/ConverterTag.java
M src/javax/faces/webapp/ValidatorTag.java

  • back out i18n messages

M src/javax/faces/Messages.properties
M src/javax/faces/Messages_de.properties
M src/javax/faces/Messages_es.properties
M src/javax/faces/Messages_fr.properties

  • back out "javax.facew.webapp/el" i18n messages until further discussion.

Index: ConverterTag.java

RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/webapp/ConverterTag.java,v
retrieving revision 1.11
diff -u -r1.11 ConverterTag.java
— ConverterTag.java 11 Nov 2004 16:09:38 -0000 1.11
+++ ConverterTag.java 11 Nov 2004 19:50:43 -0000
@@ -63,12 +63,6 @@

// -------------------------------------------------------------- Attributes

  • public static final String INVALID_EXPRESSION_MESSAGE_ID =
    "javax.faces.el.INVALID_EXPRESSION";

  • public static final String COMPONENT_FROM_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.COMPONENT_FROM_TAG_ERROR";

  • public static final String NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR";

  • public static final String NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID =
    "javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR";

  • public static final String CANT_CREATE_CLASS_ID =
    "javax.faces.webapp.CANT_CREATE_CLASS";

    /**

  • The identifier of the {@link Converter}

    instance to be created.


    */
    @@ -102,14 +96,8 @@
    public void setBinding(String binding)
    throws JspException {
    if (binding!= null && !UIComponentTag.isValueReference(binding)) {

  • Object[] params = {binding};

    • FacesMessage message = MessageFactory.getMessage(
    • INVALID_EXPRESSION_MESSAGE_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Invalid Expression:"+binding); - }
    • // PENDING i18n
    • throw new JspException("Invalid Expression:"+binding);
      }
      this.binding = binding;
      }
      @@ -133,15 +121,8 @@
      UIComponentTag tag =
      UIComponentTag.getParentUIComponentTag(pageContext);
      if (tag == null) { // PENDING - i18n
    • Object[] params = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ + throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ this.getClass().getName()); - }
      }

    // Nothing to do unless this tag created a component
    @@ -151,24 +132,13 @@

    UIComponent component = tag.getComponentInstance();
    if (component == null) {

    • FacesMessage message = MessageFactory.getMessage(
    • COMPONENT_FROM_TAG_ERROR_MESSAGE_ID, null);
    • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Can't create Component from tag."); - }
    • //PENDING i18n
    • throw new JspException("Can't create Component from tag.");
      }
      if (!(component instanceof ValueHolder)) {
    • Object params [] = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ + //PENDING i18n + throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ this.getClass().getName()); - }
      }

    converter = createConverter();
    @@ -187,14 +157,9 @@
    }

    Object params [] = {"javax.faces.convert.Converter",converterError};- FacesMessage
    message = MessageFactory.getMessage(

    • CANT_CREATE_CLASS_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Can't create class of type:"+ + // PENDING i18n + throw new JspException("Can't create class of type:"+ "javax.faces.convert.Converter for:"+converterError); - }
      }

    ValueHolder vh = (ValueHolder)component;

    Index: ValidatorTag.java

    RCS file:
    /cvs/javaserverfaces-sources/jsf-api/src/javax/faces/webapp/ValidatorTag.java,v
    retrieving revision 1.17
    diff -u -r1.17 ValidatorTag.java
    — ValidatorTag.java 11 Nov 2004 16:09:39 -0000 1.17
    +++ ValidatorTag.java 11 Nov 2004 19:51:21 -0000
    @@ -60,12 +60,6 @@

    // ------------------------------------------------------------- Attributes

    • public static final String INVALID_EXPRESSION_MESSAGE_ID =
      "javax.faces.el.INVALID_EXPRESSION";
    • public static final String COMPONENT_FROM_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.COMPONENT_FROM_TAG_ERROR";
    • public static final String NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR";
    • public static final String NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID =
      "javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR";
    • public static final String CANT_CREATE_CLASS_ID =
      "javax.faces.webapp.CANT_CREATE_CLASS";

    /**

    • The identifier of the {@link Validator} instance to be created.

    */
    @@ -100,14 +94,8 @@
    public void setBinding(String binding)
    throws JspException {
    if (binding != null && !UIComponentTag.isValueReference(binding)) {

    • Object[] params = {binding}

    ;

  • FacesMessage message = MessageFactory.getMessage(

  • INVALID_EXPRESSION_MESSAGE_ID, params);

  • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Invalid Expression:"+binding); - }

    • //PENDING i18n
    • throw new JspException("Invalid Expression:"+binding);
      }
      this.binding = binding;
      }
      @@ -132,15 +120,9 @@
      UIComponentTag tag =
      UIComponentTag.getParentUIComponentTag(pageContext);
      if (tag == null) {
    • Object[] params = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_FACES_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - }

    else

    { - throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ + //PENDING i18n + throw new JspException("Not nested in a UIComponentTag Error for tag with handler class:"+ this.getClass().getName()); - }

    }

// Nothing to do unless this tag created a component
@@ -150,24 +132,13 @@

UIComponent component = tag.getComponentInstance();
if (component == null) {

  • FacesMessage message = MessageFactory.getMessage(

  • COMPONENT_FROM_TAG_ERROR_MESSAGE_ID, null);

  • if (message != null) { - throw new JspException(message.getSummary()); - } else { - throw new JspException("Can't create Component from tag."); - }

    • //PENDING i18n
    • throw new JspException("Can't create Component from tag.");
      }
      if (!(component instanceof EditableValueHolder)) {
    • Object params [] = {this.getClass().getName()};
    • FacesMessage message = MessageFactory.getMessage(
    • NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID, params);
    • if (message != null) { - throw new JspException(message.getSummary()); - }

    else

    { - throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ + // PENDING i18n + throw new JspException("Not nested in a tag of proper type. Error for tag with handler class:"+ this.getClass().getName()); - }

    }

validator = createValidator();
@@ -185,15 +156,9 @@
}
}

  • Object params [] = {"javax.faces.validator.Validator",validateError}

    ;

  • FacesMessage message = MessageFactory.getMessage(

  • CANT_CREATE_CLASS_ID, params);

  • if (message != null) { - throw new JspException(message.getSummary()); - }

    else

    { - throw new JspException("Can't create class of type:"+ - "javax.faces.validator.Validator from:"+validateError); - }

    • // PENDING i18n
    • throw new JspException("Can't create class of type:"+
    • "javax.faces.validator.Validator from:"+validateError);
      }

// Register an instance with the appropriate component

Index: Messages_de.properties

RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_de.properties,v
retrieving revision 1.17
diff -u -r1.17 Messages_de.properties
— Messages_de.properties 11 Nov 2004 16:11:23 -0000 1.17
+++ Messages_de.properties 11 Nov 2004 19:53:25 -0000
@@ -44,7 +44,6 @@
javax.faces.validator.LengthValidator.MAXIMUM=Validierungs-Fehler: Wert ist
gr\u00F6\u00DFer als zul\u00E4ssiges Maximum ''

{0}''.
javax.faces.validator.LengthValidator.MINIMUM=Validierungs-Fehler: Wert ist
kleiner als zul\u00E4ssiges Minimum ''{0}

''.
javax.faces.component.UIInput.REQUIRED=Validierungs-Fehler: Wert wird
ben\u00F6tigt.
-javax.faces.component.UIInput.CONVERSION=Conversion error occurred.
javax.faces.component.UISelectOne.INVALID=Validierungs-Fehler: Wert nicht
g\u00F6ltig.
javax.faces.component.UISelectMany.INVALID=Validierungs-Fehler: Wert nicht
g\u00F6ltig.
javax.faces.validator.RequiredValidator.FAILED=Validierungs-Fehler: Wert wird
ben\u00F6tigt.
@@ -52,20 +51,6 @@
javax.faces.validator.LongRangeValidator.MAXIMUM=Validierungs-Fehler: Wert ist
gr\u00F6\u00DFer als zul\u00E4ssiges Maximum ''

{0}''.
javax.faces.validator.LongRangeValidator.MINIMUM=Validierungs-Fehler: Wert ist
kleiner als zul\u00E4ssiges Minimum ''{0}

''.
javax.faces.validator.LongRangeValidator.TYPE=Validierungs-Fehler: Wert ist
nicht vom richtigen Datentyp.

-#
==============================================================================#
EL Errors
-#
==============================================================================javax.faces.el.INVALID_EXPRESSION=Invalid
expression: ''

{0}''.

-#
==============================================================================#
Webapp Errors
-#
==============================================================================javax.faces.webapp.COMPONENT_FROM_TAG_ERROR=Can''t
create Component from tag.
-javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
-Error for tag with handler class: ''{0}

''.
-javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper
type: Error for tag with handler class: ''

{0}''.
-javax.faces.webapp.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''{0}

''
-from: ''

{1}''.
-javax.faces.webapp.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}''.
-javax.faces.webapp.INVALID_PARENT_COMPONENT=Parent component must be type: ''{0}''.

com.sun.faces.TYPECONVERSION_ERROR=Konvertierungs-Fehler: Wert ''{0}'' f\u00FCr
Modell ''{1}

''.
com.sun.faces.MODELUPDATE_ERROR=Modell-Aktualisierungsfehler: Fehler
w\303\244hrend der Aktualisierung der Wertes ''

{0}'' f\u00fcr Modell ''{1}''.
com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=Fehler beim Erzeugen einer
Struktur. FacesContext kann nicht erzeugt werden. Vielleicht sind ein paar
Eingabe-Parameter Null?
@@ -139,3 +124,5 @@
com.sun.faces.OBJECT_CREATION_ERROR=One or more confgured application objects
could not be created. Check your web application logs for details.

com.sun.faces.CYCLIC_REFERENCE_ERROR=Possible cycle reference to managed bean "{0}

"
+
+javax.faces.component.UIInput.CONVERSION=Conversion error occurred.

Index: Messages_es.properties

RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_es.properties,v
retrieving revision 1.17
diff -u -r1.17 Messages_es.properties
— Messages_es.properties 11 Nov 2004 16:11:23 -0000 1.17
+++ Messages_es.properties 11 Nov 2004 19:54:19 -0000
@@ -45,7 +45,6 @@
javax.faces.validator.LengthValidator.MAXIMUM=Error de Validaci\u00F3n: Valor
es m\u00E1s grande de valor de m\u00E1ximo permitido: ''

{0}''.
javax.faces.validator.LengthValidator.MINIMUM=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.UIInput.CONVERSION=Conversion error occurred.
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.validator.RequiredValidator.FAILED=Error de Validaci\u00f3n: Valor
es necesario.
@@ -53,20 +52,6 @@
javax.faces.validator.LongRangeValidator.MAXIMUM=Error de Validaci\u00F3n:
Valor es m\u00E1s grande de valor de m\u00E1ximo permitido: ''

{0}''.
javax.faces.validator.LongRangeValidator.MINIMUM=Error de Validaci\u00F3n:
Valor is menos de valor de m\u00EDnimo permitido: ''{0}

''.
javax.faces.validator.LongRangeValidator.TYPE=Error de Validaci\u00F3n: Valor
no es correcto tipo.

-#
==============================================================================#
EL Errors
-#
==============================================================================javax.faces.el.INVALID_EXPRESSION=Invalid
expression: ''

{0}''.

-#
==============================================================================#
Webapp Errors
-#
==============================================================================javax.faces.webapp.COMPONENT_FROM_TAG_ERROR=Can''t
create Component from tag.
-javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
-Error for tag with handler class: ''{0}

''.
-javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper
type: Error for tag with handler class: ''

{0}''.
-javax.faces.webapp.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''{0}

''
-from: ''

{1}''.
-javax.faces.webapp.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}''.
-javax.faces.webapp.INVALID_PARENT_COMPONENT=Parent component must be type: ''{0}''.

com.sun.faces.TYPECONVERSION_ERROR=Error de conversion en el valor puesto
''{0}'' del modelo ''{1}

''.
com.sun.faces.MODELUPDATE_ERROR=Fallo de poner al d\u00edda del modelo: da
valor ''

{0}'' para modelo ''{1}''
com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=Error de construcci\u00f3n: No
puede creer FacesContext. Uno o mas de algunos parametros requerida esta nulo.
@@ -140,3 +125,5 @@
com.sun.faces.OBJECT_CREATION_ERROR=One or more confgured application objects
could not be created. Check your web application logs for details.

com.sun.faces.CYCLIC_REFERENCE_ERROR=Possible cycle reference to managed bean "{0}

"
+
+javax.faces.component.UIInput.CONVERSION=Conversion error occurred.

Index: Messages_fr.properties

RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages_fr.properties,v
retrieving revision 1.16
diff -u -r1.16 Messages_fr.properties
— Messages_fr.properties 11 Nov 2004 16:11:23 -0000 1.16
+++ Messages_fr.properties 11 Nov 2004 19:55:14 -0000
@@ -45,7 +45,6 @@
javax.faces.validator.LengthValidator.MAXIMUM=Erreur de validation: La valeur
sp\u00E9cifi\u00E9e est sup\u00E9rieure \u00B4 la valeur maximale permise
''

{0}''. javax.faces.validator.LengthValidator.MINIMUM=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.UIInput.CONVERSION=Conversion error occurred.
javax.faces.component.UISelectOne.INVALID=Erreur de validation: Valeur not valid.
javax.faces.component.UISelectMany.INVALID=Erreur de validation: Valeur not valid.
javax.faces.validator.RequiredValidator.FAILED=Erreur de validation: Valeur
requise.
@@ -53,20 +52,6 @@
javax.faces.validator.LongRangeValidator.MAXIMUM=Erreur de validation: La
valeur sp\u00E9cifi\u00E9e est sup\u00E9rieure \u00B4 la valeur maximale permise
''

{0}''.
javax.faces.validator.LongRangeValidator.MINIMUM=Erreur de validation: La
valeur sp\u00E9cifi\u00E9e est inf\u00E9rieure \u00B4 la valeur minimale permise
''{0}

''.
javax.faces.validator.LongRangeValidator.TYPE=Erreur de validation: La valeur
sp\u00E9cifi\u00E9e n'est pas du bon type.

-#
==============================================================================#
EL Errors
-#
==============================================================================javax.faces.el.INVALID_EXPRESSION=Invalid
expression: ''

{0}''.

-#
==============================================================================#
Webapp Errors
-#
==============================================================================javax.faces.webapp.COMPONENT_FROM_TAG_ERROR=Can''t
create Component from tag.
-javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
-Error for tag with handler class: ''{0}

''.
-javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper
type: Error for tag with handler class: ''

{0}''.
-javax.faces.webapp.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''{0}

''
-from: ''

{1}''.
-javax.faces.webapp.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}''.
-javax.faces.webapp.INVALID_PARENT_COMPONENT=Parent component must be type: ''{0}''.

com.sun.faces.TYPECONVERSION_ERROR=Erreur de conversion quand la valeur ''{0}''
est commise pour le mod\u00E9le ''{1}

''.
com.sun.faces.MODELUPDATE_ERROR=Erreur lors de la mise \u00b4 jour de la valeur
''

{0}'' pour le mod\u00e9le ''{1}''.
com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=Erreur lors de la construction:
Ne peut cr\u00e9er le FacesContext. Un ou plusieurs param\u00e9tres peuvent ''tre
nuls.

Index: Messages.properties

RCS file: /cvs/javaserverfaces-sources/jsf-ri/src/javax/faces/Messages.properties,v
retrieving revision 1.18
diff -u -r1.18 Messages.properties
— Messages.properties 11 Nov 2004 16:11:23 -0000 1.18
+++ Messages.properties 11 Nov 2004 19:55:45 -0000
@@ -65,20 +65,6 @@
javax.faces.validator.LongRangeValidator.MINIMUM=Validation Error: Value is
less than allowable minimum of ''{0}

''
javax.faces.validator.LongRangeValidator.TYPE=Validation Error: Value is not of
the correct type.

-#
==============================================================================-#
EL Errors
-#
==============================================================================-javax.faces.el.INVALID_EXPRESSION=Invalid
expression: ''

{0}''.

-#
==============================================================================-#
Webapp Errors
-#
==============================================================================-javax.faces.webapp.COMPONENT_FROM_TAG_ERROR=Can''t
create Component from tag.
-javax.faces.webapp.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
Error for tag with handler class: ''{0}

''.
-javax.faces.webapp.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper
type: Error for tag with handler class: ''

{0}''.
-javax.faces.webapp.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''{0}

''
from: ''

{1}''.
-javax.faces.webapp.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}''.
-javax.faces.webapp.INVALID_PARENT_COMPONENT=Parent component must be type: ''{0}''.

============================================================================== #
IMPLEMENTATION DEFINED MESSAGES
@@ -88,7 +74,6 @@
com.sun.faces.ATTRIBUTE_NOT_SUPORTED=Attribute ''{0}'' not supported for
component type ''{1}

''.
com.sun.faces.CANT_CONVERT_VALUE=Can''t convert property: ''

{0}'' to value
type: ''{1}''.
com.sun.faces.CANT_CLOSE_INPUT_STREAM=Unable to close input stream.
-com.sun.faces.CANT_CREATE_CLASS_ERROR=Can''t create class of type: ''{0}

'' from
''

{1}''.
com.sun.faces.CANT_CREATE_LIFECYCLE_ERROR=Can''t create Lifecycle for id: ''{0}''.
com.sun.faces.CANT_INSTANTIATE_CLASS=Can''t instantiate class: ''{0}''.
com.sun.faces.CANT_INTROSPECT_CLASS=Can''t introspect class: ''{0}''
@@ -126,7 +111,6 @@
com.sun.faces.MODELUPDATE_ERROR=Model Update failure for value ''{0}'' in
model''{1}

''.
com.sun.faces.NAMED_OBJECT_NOT_FOUND_ERROR=Expression Error: Named Object:
''

{0}'' not found.
com.sun.faces.NOT_NESTED_IN_FACES_TAG_ERROR=Not nested in a UIComponentTag
Error for tag with handler class: ''{0}

''.
-com.sun.faces.NOT_NESTED_IN_TYPE_TAG_ERROR=Not nested in a tag of proper type:
Error for tag with handler class: ''

{0}''.
com.sun.faces.NO_DTD_FOUND_ERROR=Unable to locate DTD with PUBLIC ID ''{0}

'' at
path ''

{1}

''.
com.sun.faces.NULL_BODY_CONTENT_ERROR=BodyContent is null for tag with handler
class: ''

{0}

''.
com.sun.faces.NULL_COMPONENT_ERROR=Construction Error: Component argument is null.

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
r=edburns

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

rogerk said:
Created an attachment (id=5)
Contains differences and new modules

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
Roger, what happen to the directories in this change-bundle? I was
hoping to be able to unzip it in my top level directory, but this
change-bundle only has one flat directory level. This makes it harder
to review.

I agree using the namespace is better than qualified name. The testcase
is very clever as well.

r=edburns

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
fixed in EDR

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
Prepare to delete "spec" subcomponent.

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@edburns said:
Move all to 1.2

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

@manfredriem said:
Closing resolved issue out

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

File: 21.zip.gz
Attached By: rogerk

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

File: issue21.tar.gz
Attached By: rogerk

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

Was assigned to rogerk

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

This issue was imported from java.net JIRA JAVASERVERFACES_SPEC_PUBLIC-21

from javaserverfaces-spec.

glassfishrobot avatar glassfishrobot commented on September 17, 2024

Marked as fixed on Thursday, March 4th 2010, 6:09:24 am

from javaserverfaces-spec.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.