You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ar...@apache.org on 2008/10/29 22:12:59 UTC

svn commit: r709009 - in /myfaces/trinidad/trunk_1.2.x: trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ trinidad-impl/src/main/java/org/apache/myface...

Author: arobinson74
Date: Wed Oct 29 14:12:58 2008
New Revision: 709009

URL: http://svn.apache.org/viewvc?rev=709009&view=rev
Log:
TRINIDAD-1280
Added try catch around the form submit with a display of a translatable message for failure to sumbit the form with an inputFile. The code isn't 100% foolproof as I do not see a way to make sure that it was indeed the inputFile that caused the error, but it should work for the large portion of the use cases

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CoreFormData.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputFileRenderer.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/MessageBundle.xrts Wed Oct 29 14:12:58 2008
@@ -451,4 +451,8 @@
   <resource key="org.apache.myfaces.trinidad.event.FileDownloadActionListener.DOWNLOAD_ERROR">An error occurred downloading the file.</resource>
   <resource key="org.apache.myfaces.trinidad.event.FileDownloadActionListener.DOWNLOAD_ERROR_detail">The file was not downloaded or was not downloaded correctly.</resource>  
 
+  <!-- message for error while uploading a file -->
+  <resource key="org.apache.myfaces.trinidad.component.core.input.CoreInputFile.INPUT_FILE_ERROR">An error occurred uploading the file.</resource>
+  <resource key="org.apache.myfaces.trinidad.component.core.input.CoreInputFile.INPUT_FILE_ERROR_detail">A file upload error has occurred, please verify your upload data and file name.</resource>  
+
 </resources>

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CoreFormData.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CoreFormData.java?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CoreFormData.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/CoreFormData.java Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -19,6 +19,7 @@
 package org.apache.myfaces.trinidadinternal.renderkit.core.xhtml;
 
 import java.io.IOException;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -44,6 +45,7 @@
 import org.apache.myfaces.trinidad.validator.ClientValidator;
 import org.apache.myfaces.trinidadinternal.share.data.ServletRequestParameters;
 
+
 /**
  * Implementation of FormData from the CoreRenderKit (or,
  * more specifically, from the Trinidad FormRenderer)
@@ -415,12 +417,12 @@
       component = new org.apache.myfaces.trinidad.component.UIXInput();
       component.setId(clientId);
 
-    }    
-    
+    }
+
     // write out the lib(s) and script
-    String libURI = submitConverter.getClientLibrarySource(context);  
+    String libURI = submitConverter.getClientLibrarySource(context);
     String clientScript = submitConverter.getClientScript(context, component);
-    Collection<String> libRefs = submitConverter.getClientImportNames();  
+    Collection<String> libRefs = submitConverter.getClientImportNames();
     _addClientScripts(context, rc, libURI, clientScript, libRefs, "TrConverter()");
 
     String converter = submitConverter.getClientConversion(context,
@@ -434,7 +436,7 @@
     }
   }
 
-  
+
   private void _addClientScripts(
     FacesContext        context,
     RenderingContext    rc,
@@ -446,16 +448,9 @@
   {
     if (libURI != null)
     {
-      // check if it's already been written
-      Map<Object, Object> props = rc.getProperties();
-      if( props.get(libURI) == null)
-      {        
-        // put the lib name in the property map so it won't be written out again
-        props.put(libURI, Boolean.TRUE);
-        XhtmlUtils.writeLibImport(context, rc, libURI);          
-      } 
+      XhtmlUtils.writeLibImport(context, rc, libURI);
     }
-  
+
     if(libRefs != null)
     {
       _writeDependencies(context, rc, libRefs);
@@ -464,14 +459,14 @@
     {
       _writeDependencies(context, rc, defaultLibRef);
     }
-    
+
     if ( clientScript != null)
     {
       List<String> clientDependencies = getClientDependencies(true);
       clientDependencies.add(clientScript);
     }
   }
-  
+
 
 
   /**
@@ -488,13 +483,13 @@
     String                    clientId
     ) throws IOException
   {
-        
+
     // write out the lib(s) and script
-    String libURI = submitValidator.getClientLibrarySource(context);  
+    String libURI = submitValidator.getClientLibrarySource(context);
     String clientScript = submitValidator.getClientScript(context, component);
-    Collection<String> libRefs = submitValidator.getClientImportNames();  
+    Collection<String> libRefs = submitValidator.getClientImportNames();
     _addClientScripts(context, rc, libURI, clientScript, libRefs, "TrValidator()");
- 
+
     String validator = submitValidator.getClientValidation(context,
                                                            component);
 
@@ -692,7 +687,7 @@
                         libReference);
     }
   }
-  
+
   /**
     * Opportunity for the ClientConverter or Validator to write any of its dependencies
     * to the output.  For HTML, this will typically be imports of
@@ -712,10 +707,10 @@
        Object[] libRefArray = libRefs.toArray();
        for (int i = 0; i < libRefArray.length; i++)
        {
-         XhtmlUtils.addLib(context, rc, libRefArray[i]);    
-       } 
+         XhtmlUtils.addLib(context, rc, libRefArray[i]);
+       }
      }
-   }  
+   }
 
   private int _inputTextCount = 0;
   private boolean _hasImmediateComponent = false;

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputFileRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputFileRenderer.java?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputFileRenderer.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/InputFileRenderer.java Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -25,8 +25,9 @@
 
 import org.apache.myfaces.trinidad.bean.FacesBean;
 import org.apache.myfaces.trinidad.component.core.input.CoreInputFile;
-
 import org.apache.myfaces.trinidad.context.RenderingContext;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.LocaleInfoScriptlet;
+
 
 public class InputFileRenderer extends InputLabelAndMessageRenderer
 {
@@ -40,43 +41,49 @@
   {
     super(type);
   }
-  
+
   @Override
   protected void findTypeConstants(FacesBean.Type type)
   {
     super.findTypeConstants(type);
     _simpleInputFile = new SimpleInputFileRenderer(type);
   }
-  
+
   @Override
   protected final void encodeAll(
-    FacesContext        context,
-    RenderingContext arc,
-    UIComponent         component,
-    FacesBean           bean) throws IOException
+    FacesContext     context,
+    RenderingContext rc,
+    UIComponent      component,
+    FacesBean        bean
+    ) throws IOException
   {
     // =-=AEW inputFile is currently disabled for PDAs.  But this should
     // run off of an agent property.
-    if (!isPDA(arc))
+    if (!isPDA(rc))
     {
-      super.encodeAll(context, arc, component, bean);
+      // ensure that the translation is sent down to the client as posting
+      // an IFRAME with an invalid file can cause errors that need to be shown
+      // to the user with JavaScript
+      XhtmlUtils.addLib(context, rc, LocaleInfoScriptlet.LOCALE_INFO_KEY);
+
+      super.encodeAll(context, rc, component, bean);
     }
   }
 
   @Override
-  protected String getRootStyleClass(FacesBean bean)  
+  protected String getRootStyleClass(FacesBean bean)
   {
     return "af|inputFile";
   }
-  
+
   @Override
   protected FormInputRenderer getFormInputRenderer()
   {
     return _simpleInputFile;
   }
-  
+
   /**
-   * 
+   *
    * @param bean
    * @return false, since inputFile does not support the readOnly attribute
    */

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -30,21 +30,16 @@
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
-import org.apache.myfaces.trinidad.logging.TrinidadLogger;
-
-import org.apache.myfaces.trinidad.component.UIXIterator;
 import org.apache.myfaces.trinidad.component.UIXComponentRef;
+import org.apache.myfaces.trinidad.component.UIXIterator;
 import org.apache.myfaces.trinidad.component.UIXSubform;
 import org.apache.myfaces.trinidad.component.UIXSwitcher;
-
 import org.apache.myfaces.trinidad.context.Agent;
-
-import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
 import org.apache.myfaces.trinidad.context.RenderingContext;
-
+import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.XhtmlScriptletFactory;
-
 import org.apache.myfaces.trinidadinternal.share.util.FastMessageFormat;
 
 
@@ -144,19 +139,27 @@
 
   /**
    * Write out a script element importing a library.
+   * The given URL will only be written once to the page.
    */
   public static void writeLibImport(
-    FacesContext        context,
-    RenderingContext arc,
-    Object              libURL) throws IOException
-  {
+    FacesContext     context,
+    RenderingContext rc,
+    Object           libURL) throws IOException
+  {
+    // check if it's already been written
+    Map<Object, Object> props = rc.getProperties();
+    if (props.containsKey(libURL)) { return; }
+
+    // put the lib name in the property map so it won't be written out again
+    props.put(libURL, Boolean.TRUE);
+
     ResponseWriter writer = context.getResponseWriter();
 
     writer.startElement("script", null);
-    XhtmlRenderer.renderScriptDeferAttribute(context, arc);
+    XhtmlRenderer.renderScriptDeferAttribute(context, rc);
     // Bug #3426092:
     // render the type="text/javascript" attribute in accessibility mode
-    XhtmlRenderer.renderScriptTypeAttribute(context, arc);
+    XhtmlRenderer.renderScriptTypeAttribute(context, rc);
 
     // For portlets, we want to make sure that we only import
     // each script once.  Employ document.write() to achieve this
@@ -164,11 +167,11 @@
     // problems when resizing windows - but we're done with Netscape 4)
     libURL = context.getExternalContext().encodeResourceURL(libURL.toString());
 
-    if (XhtmlConstants.FACET_PORTLET.equals(arc.getOutputMode()))
+    if (XhtmlConstants.FACET_PORTLET.equals(rc.getOutputMode()))
     {
-      if (arc.getProperties().get(_PORTLET_LIB_TABLE_KEY) == null)
+      if (rc.getProperties().get(_PORTLET_LIB_TABLE_KEY) == null)
       {
-        arc.getProperties().put(_PORTLET_LIB_TABLE_KEY, Boolean.TRUE);
+        rc.getProperties().put(_PORTLET_LIB_TABLE_KEY, Boolean.TRUE);
         writer.writeText("var _uixJSL;" +
                          "if(!_uixJSL)_uixJSL={};" +
                          "function _addJSL(u)" +

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -38,7 +38,7 @@
 
  * @version $Name:  $ ($Revision: adfrt/faces/adf-faces-impl/src/main/java/oracle/adfinternal/view/faces/renderkit/core/xhtml/jsLibs/LocaleInfoScriptlet.java#0 $) $Date: 10-nov-2005.19:02:47 $
  */
-class LocaleInfoScriptlet extends LibraryScriptlet
+public class LocaleInfoScriptlet extends LibraryScriptlet
 {
   static public final String LOCALE_INFO_KEY          = "LocaleInfo";
 
@@ -56,7 +56,7 @@
   /**
    * @todo Revisit separate translation and internationalization
    * locales.
-   */ 
+   */
   @Override
   protected void outputScriptletImpl(
     FacesContext        context,
@@ -134,9 +134,9 @@
     buffer.append(locStr);
     return buffer.toString();
   }
-  
 
-  /* return extra parameter "?loc=en", so that we can know what locale 
+
+  /* return extra parameter "?loc=en", so that we can know what locale
    * the translations in LocaleElements should be in. */
   protected String getExtraParameters(
   FacesContext        context,
@@ -147,11 +147,14 @@
     String extraParams = "?loc=" + locStr;
 
     return extraParams;
-  }  
+  }
 
-    protected Locale getFormattingLocale(RenderingContext arc) {
-      return arc.getLocaleContext().getFormattingLocale();
-    }
+  protected Locale getFormattingLocale(
+    RenderingContext rc
+    )
+  {
+    return arc.getLocaleContext().getFormattingLocale();
+  }
 
   /**
    * Returns the locale variant type to use when formatting dates. The locale
@@ -175,7 +178,7 @@
 
     return null;
   }
-  
+
   /**
    * Returns the Locale to use for loading a JavaScript resource,
    * given an input Locale
@@ -184,9 +187,9 @@
     Locale inLocale
     )
   {
-    HashMap<Locale, Locale> supportedMap = 
+    HashMap<Locale, Locale> supportedMap =
       LocaleList.getSupportedLocales();
-    
+
     Locale outLocale = inLocale;
     if(supportedMap.containsKey(outLocale))
     {
@@ -196,19 +199,19 @@
     {
       String variant  = outLocale.getVariant();
       String language = outLocale.getLanguage();
-      
+
       boolean isSupportedLocale = false;
-      
+
       if (variant.length() != 0)
-      {        
+      {
         outLocale = new Locale(language, outLocale.getCountry());
         isSupportedLocale = supportedMap.containsKey(outLocale);
       }
-      
+
       if (!isSupportedLocale)
-      {        
+      {
         outLocale = new Locale(language, "");
-        
+
         if (!supportedMap.containsKey(outLocale))
         {
           // use default Locale
@@ -217,9 +220,9 @@
       }
 
       return outLocale;
-    }        
+    }
   }
-  
+
 
   static private final String    _RESOURCE_BASE = "resources/LocaleElements_";
   static private final Scriptlet _sInstance = new LocaleInfoScriptlet();

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -309,7 +309,7 @@
     // blackberry because navigator.userAgent on BlackBery Browser 4.0
     // starts with Mozilla/4.0 (even though the User-Agent sent to the
     // server starts with BlackBerry<model>/<version>)
-    
+
     // BlackBerry Browser 4.0+ supports navigator.appVersion,
     // and earlier versions don't support script, so we can
     // leave the version as defined above
@@ -666,7 +666,7 @@
   {
     // dummy read to test security error
     parentWindow.name;
-    
+
     return parentWindow;
   }
   catch (e)
@@ -845,7 +845,7 @@
 {
   //PH:set the right event object;
   event = _getEventObj();
-  
+
   // Make sure we don't run through this function twice
   // when we close a dialog. The
   // _unloadADFDialog function blocks a second run
@@ -1060,7 +1060,7 @@
   // within a frame.  So, we check for the _abandoned property
   // on the "top" window.
   var topWindow = _getTop(self);
-  
+
   return topWindow._abandoned;
 }
 
@@ -1186,12 +1186,12 @@
 function _getFormName(form)
 {
   var name = form.name;
-  
+
   if ((typeof name) != 'string')
   {
     if (_agent.isIE)
     {
-      name = form.attributes['name'].nodeValue; 
+      name = form.attributes['name'].nodeValue;
     }
     else
     {
@@ -1288,7 +1288,7 @@
     validators = _getValidators(form);
 
   var failureMap = _multiValidate(form, source,  validators);
-  
+
   var firstFailure = true;
   var failureString = errorTitle + '\n';
 
@@ -1303,7 +1303,7 @@
     var currInput = _getFormElement(form, currId);
     if (!currInput)
       continue;
-      
+
     // Get the label text for this input
     var label = validators[currId].label;
 
@@ -1319,12 +1319,12 @@
 
       // Get the current message
       var facesMessage = messages[j];
-    
-      var errorString = _getGlobalErrorString(currInput, 
-                          globalMessage, 
+
+      var errorString = _getGlobalErrorString(currInput,
+                          globalMessage,
                           facesMessage.getDetail(),
-                          label);   
-    
+                          label);
+
       failureString += errorString + '\n';
     }
   }
@@ -1339,7 +1339,7 @@
   _recordValidation(true, 0);
   alert(failureString);
   _recordValidation(true, 0);
-  
+
   return false;
 }
 
@@ -1354,7 +1354,7 @@
     validators = _getValidators(form);
 
   var failureMap = _multiValidate(form, source,  validators);
-  
+
   var noFailures = true;
 
   for (var currId in validators)
@@ -1366,14 +1366,14 @@
 
     // If component hasn't got a message element, then skip
     var msgElem = _getElementById(document, currId+ "::msg");
-      
+
     // Clear any existing inline message
     if (msgElem)
       msgElem.innerHTML = "";
-      
-    // Clear any existing messages from the MessageBox  
+
+    // Clear any existing messages from the MessageBox
     TrMessageBox.removeMessages(currId);
-    
+
     // Get the messages array for currId, skip if none
     var messages = failureMap[currId];
     if (!messages || messages.length==0)
@@ -1385,12 +1385,12 @@
         iconElem.style.display = "none";
       continue;
     }
-    
+
     // Get the input element
     var currInput = _getFormElement(form, currId);
     if (!currInput)
       continue;
-      
+
     // Get the label text for this input
     var label = validators[currId].label;
 
@@ -1416,11 +1416,11 @@
       // summary or detail, then pop an alert to warn the page developer
       if (!msgElem && !TrMessageBox.isPresent())
         alert("Field Error [" + currId + "] - " + facesMessage.getDetail());
-      
+
       // Add the message to the MessageBox
       TrMessageBox.addMessage(currId, label, facesMessage);
     }
-    
+
     // If we got this far, we know there's something to display so
     // make the inline message and icon visible.
     if (msgElem)
@@ -1437,12 +1437,12 @@
  * the appropriate message will be displayed in the message component for this
  * input field.
  * <p>
- * The simplest usage of this method is from the onblur attribute of the 
+ * The simplest usage of this method is from the onblur attribute of the
  * input component. e.g. onblur="_validateInput(event);"
  * <p>
  * @param event(Event) The event object provided by the event handler.
  * @param falseOnFail(boolean) Force method to return false if validation failed.
- * @return boolean, false if validation failed and falseOnFail set to true, otherwise true. 
+ * @return boolean, false if validation failed and falseOnFail set to true, otherwise true.
  */
 // TODO: make this a public function only after hanging it on
 // a namespaced object, *and* making it not specific to inline
@@ -1451,10 +1451,10 @@
 {
   if (!event)
     return true;
-    
+
   // Get the element associated with the event
   var inputElem = event.target || event.srcElement;
-  
+
   if (!inputElem || !inputElem.id)
     return true;
 
@@ -1465,7 +1465,7 @@
   var validators = _getValidators(form);
   if (!validators)
     return true;
-    
+
   var id = inputElem.id;
 
   var descriptor = validators[id];
@@ -1487,8 +1487,8 @@
 
   // Call inline validation using only the appropriate validators
   var retval = _validateInline(form, null, validatorsToRun, 1, null);
-  
-  // Only return the actual outcome if asked to do so 
+
+  // Only return the actual outcome if asked to do so
   if (falseOnFail)
     return retval;
 }
@@ -1832,7 +1832,31 @@
       if(_agent.isIE && window.external)
         window.external.AutoCompleteSaveForm(form);
 
-      form.submit();
+      try
+      {
+        form.submit();
+      }
+      catch (e)
+      {
+        if (TrPage.getInstance().getRequestQueue()._isMultipartForm(form))
+        {
+          // IE will fail on an input file submission of a file that does not exist
+          var facesMessage = _createFacesMessage(
+            'org.apache.myfaces.trinidad.component.core.input.CoreInputFile.INPUT_FILE_ERROR');
+          // if there's nowhere to display the message in either
+          // summary or detail, then pop an alert to warn the page developer
+          if (!TrMessageBox.isPresent())
+            alert(facesMessage.getDetail());
+          else
+            // Add the message to the MessageBox
+            TrMessageBox.addMessage(null, null, facesMessage);
+        }
+        else
+        {
+          throw e;
+        }
+      }
+
       if (_blockOnEverySubmit)
         _pprStartBlocking(window);
 
@@ -2016,7 +2040,7 @@
           }
           else if (element.type.indexOf("select") != -1)
           {
-            //PH:selectdata must be initialized to "". Otherwise, results for 
+            //PH:selectdata must be initialized to "". Otherwise, results for
             //selectdata+="stringtoconcatenate" is "undefinedstringtoconcatenate"
             var selectdata ="" ;
             for (var j = 0; j < element.options.length; j++)
@@ -2242,7 +2266,7 @@
     if (currInput.focus)
       currInput.focus();
 
-    //PH:element["value"] is not supported for PIE,IEM and BB. Therefore 
+    //PH:element["value"] is not supported for PIE,IEM and BB. Therefore
     //use element.value which is supported by all
     if ((currInput.type == "text")
         && (currInput.value != (void 0))
@@ -2265,12 +2289,12 @@
   if (!validatorMap)
     validatorMap = new Object();
 
-  // Now, iterate through the array we've been given  
+  // Now, iterate through the array we've been given
   for (var i = 0; i < validators.length; i += 5)
   {
     var id = validators[i];
     var descriptor = new Object();
-   
+
     // If the field is required, replace the format index with the
     // actual message
     if (validators[i + 1])
@@ -2283,7 +2307,7 @@
     // If the converter exists, change it from an index to a converter
     var converterIndex = validators[i + 3];
     if (converterIndex != null)
-    { 
+    {
       descriptor.converter = validations[converterIndex];
     }
 
@@ -2313,7 +2337,7 @@
     {
       var inputElem = _getElementById(document, id);
       if (inputElem)
-      { 
+      {
         _addEvent(inputElem, "change", _validateInput);
       }
     }
@@ -2378,7 +2402,7 @@
       {
           continue;
       }
-        
+
       var isIgnored = false;
       // If this field is one that's specifically being ignored,
       // then don't validate here.
@@ -2411,7 +2435,7 @@
 
       //Initialize the failure array for this input
       var inputFailures = new Array();
-   
+
       var descriptor = validators[id];
       var label = descriptor.label;
 
@@ -2436,9 +2460,9 @@
         // get the formatted error string for the current input and
         var requiredErrorString = _getErrorString(currInput, label,
                                                   descriptor.requiredFormat);
-                                                  
+
         // Populate the failureMap with the current error
-        inputFailures[inputFailures.length] = 
+        inputFailures[inputFailures.length] =
             new TrFacesMessage(requiredErrorString, requiredErrorString);
       }
       else
@@ -2463,13 +2487,13 @@
             }
             catch (e)
             {
-              converterError = true; 
+              converterError = true;
                  // Populate the failureMap with the current error
               inputFailures[inputFailures.length] = e.getFacesMessage();
             }
           }
         }
-        
+
         if ( converterError == false)
         {
           var validatorArray = descriptor.validators;
@@ -2488,13 +2512,13 @@
                 if (validatorConstructor && value !== undefined)
                 {
                   var validator = eval(validatorConstructor);
-                  
-                  try 
+
+                  try
                   {
                     validator.validate(value, label, converter);
                   }
                   catch (e)
-                  {  
+                  {
                     // Populate the failureMap with the current error
                     inputFailures[inputFailures.length] = e.getFacesMessage();
                   }
@@ -2504,7 +2528,7 @@
           }
         }
       }
-      
+
       // if there were failures, then add the current input to the failuresMap
       if (inputFailures.length > 0)
       {
@@ -2514,7 +2538,7 @@
       }
     }
   }
-  
+
   return failureMap;
 }
 
@@ -2530,10 +2554,10 @@
   key,
   label,
   value,
-  param2,  
+  param2,
   param3
 )
-{  
+{
   var summary = TrMessageFactory.getSummaryString(key);
   var detail = TrMessageFactory.getDetailString(key);
   // format the detail error string
@@ -2541,8 +2565,8 @@
   {
     detail = TrFastMessageFormatUtils.format(detail, label, value, param2, param3);
   }
-  return new TrFacesMessage(summary, 
-                          detail, 
+  return new TrFacesMessage(summary,
+                          detail,
                           TrFacesMessage.SEVERITY_ERROR);
 }
 
@@ -2559,18 +2583,18 @@
   detail,
   label,
   value,
-  param2,  
+  param2,
   param3
 )
-{  
+{
 
   // format the detail error string
   if (detail != null)
   {
     detail = TrFastMessageFormatUtils.format(detail, label, value, param2, param3);
   }
-  
-  return new TrFacesMessage(summary, 
+
+  return new TrFacesMessage(summary,
                           detail,
                           TrFacesMessage.SEVERITY_ERROR);
 }
@@ -2583,7 +2607,7 @@
   label
   )
 {
-  var form = _getForm(input);  
+  var form = _getForm(input);
   if (errorFormat && label != null)
   {
     return _formatErrorString(errorFormat,
@@ -2592,9 +2616,9 @@
                                "1":errorString
                              });
   }
-  
-  return errorString;  
-}                
+
+  return errorString;
+}
 
 
 /**
@@ -2603,15 +2627,15 @@
  */
  function _isShowing(
    input)
- { 
-   //PH: removed !input.focus because firstly, focus() function is supported by 
-   //all browsers (PIE,IEM,BB,FF,IE) and secondly, _isShowing should be treated 
-   //as a function to test visibility only. If there is a case where one really 
-   //wants to test whether focus function exists or not, do it in an if 
+ {
+   //PH: removed !input.focus because firstly, focus() function is supported by
+   //all browsers (PIE,IEM,BB,FF,IE) and secondly, _isShowing should be treated
+   //as a function to test visibility only. If there is a case where one really
+   //wants to test whether focus function exists or not, do it in an if
    //statement and call _isShowing within it.
    if (input.type == 'hidden')
        return false;
-   
+
    // determine visibility from style information
    if (_agent.isIEGroup)
    {
@@ -2647,12 +2671,12 @@
 
      var computedStyle = input.ownerDocument.defaultView.getComputedStyle(input,
                                                                           null);
-     
+
      // either of these styles will prevent focus from succeeding
      return ((computedStyle["visibility"] != "hidden") &&
              (computedStyle["display"] != "none"));
    }
-   
+
    return true;
  }
 
@@ -2669,7 +2693,7 @@
    {
      return input.name;
    }
-   
+
    // for non-Netscape return the ID directly
    var id = input.id;
 
@@ -2721,7 +2745,7 @@
 
    return form;
  }
- 
+
 /**
  * Returns the element of name elementName for the given form
  */
@@ -2745,7 +2769,7 @@
   }
   return formElement;
 }
- 
+
 
 /**
  * Returns the name of an input element on either IE or Netscape, dealing
@@ -2785,7 +2809,7 @@
 {
   if (type == (void 0))
     return false;
-    
+
   if (obj == (void 0))
     return false;
 
@@ -2880,7 +2904,7 @@
   {
     var currValue = tokens[currToken];
 
-    // if the token has no value 
+    // if the token has no value
     if (!currValue)
     {
       currValue = "";
@@ -2913,24 +2937,24 @@
      for (i=0; i<currValue.length; i++)
      {
        b1 = b1 + 'placeHolderString';
-     }  
-   
+     }
+
      while (indexOf >= 0)
     {
       currString=(currString.substring(0,indexOf)
            + b1
            + currString.substring(indexOf+currRegExp.length));
-      indexOf = currString.indexOf(currRegExp);   
-    }    
-   
+      indexOf = currString.indexOf(currRegExp);
+    }
+
     indexOf = currString.indexOf(b1);
-   
+
     while (indexOf >= 0)
-    {  
+    {
       currString =(currString.substring(0,indexOf)
            + currValue
-           + currString.substring(indexOf+b1.length));      
-      indexOf = currString.indexOf(b1);   
+           + currString.substring(indexOf+b1.length));
+      indexOf = currString.indexOf(b1);
     }
   }
   else
@@ -2954,7 +2978,7 @@
   // And now take any doubled-up single quotes down to one,
   // to handle escaping
   var twoSingleQuotes = /''/g;
-  
+
   return currString.replace(twoSingleQuotes, "'");
 }
 
@@ -2975,7 +2999,7 @@
   if ( shortCircuit && (result1 == false))
     return false;
   var result2 = _callChained(evh2, target, event);
-  
+
   // since undefined results should be evaluated as true,
   // return false only if either result1 or result2 return false
   return !((result1 == false) || (result2 == false));
@@ -2989,7 +3013,7 @@
 {
 
   if (handler && (handler.length > 0))
-  { 
+  {
     // handle ie case, where we have no event parameter
 
     if( (typeof(event) == 'undefined') || (event == (void 0) ) )
@@ -3097,25 +3121,25 @@
     //
     //PH:exclude BlackBerry
     if (((_agent.kind != "ie") || (_agent.version >= 5)) && (!_agent.isBlackBerry))
-    {    
-      var element = doc.getElementById(id);     
-    
+    {
+      var element = doc.getElementById(id);
+
       // IE's implementation of getElementById() is buggy.  If
       // the page contains an anchor which has the same name
       // as the requested id, IE will return the anchor, even
       // if the anchor's id attribute is not set.  So, make
       // sure that we actually get back an element with the
-      // correct id.  
+      // correct id.
       if ((element == null) || (element.id == id))
         return element;
-      // If we get here, that means that IE has probably returned 
+      // If we get here, that means that IE has probably returned
       // an anchor instead of the desired element.  Let's scan
       // the entire DOM tree to find the element we want.
       return _findElementById(doc, id);
     }
-    
-    return doc.getElementById(id);    
-  }   
+
+    return doc.getElementById(id);
+  }
   else if (typeof(doc.all) == 'undefined')
   {
     // Browser does not support getElementById nor DOM documnet.all object.
@@ -3130,12 +3154,12 @@
       {
         var f = doc.forms[i];
         if(f[id])
-          return f[id];        
+          return f[id];
       }
-      
-    //element is not within the form but form(s) is(are) present. 
-    return window[id];   
-  }  
+
+    //element is not within the form but form(s) is(are) present.
+    return window[id];
+  }
   else
   {
     // Browser does not support getElementById but supports DOM documnet.all
@@ -3372,7 +3396,7 @@
     // blocking starts. Use a timeout to allow the update.
     win._pprTimeoutFunc = win.setTimeout("_doPprStartBlocking(window);",
                                              1);
-    return;        
+    return;
   }
   else
   {
@@ -3412,7 +3436,7 @@
                                                8000);
     }
     else if (_agent.isIEGroup)
-    {    
+    {
       // save off the element we'll return focus to
       _pprEventElement = window.document.activeElement;
     }
@@ -4117,7 +4141,7 @@
   // If we're inside a frameset, and the top frame wants
   // reloads blocked, install a _noReload handler.
   var topWindow = _getTop(self);
-  
+
   if ((self != topWindow) && topWindow["_blockReload"])
   {
     document.onkeydown = _noReload;
@@ -4131,7 +4155,7 @@
     //PH: Set Focus on element for all browsers.
     if(myElement)
       _setFocus(myElement);
-  }  
+  }
 
   // Initialize ourselves if we're in a PopupDialog
   TrPopupDialog._initDialogPage();
@@ -4442,9 +4466,9 @@
 }
 
 /** This function is called from _spinboxRepeat.
- * This function increments or decrements the value that is in the 
- * input field by the stepSize. If the max/min is reached, check circular.  
- * If circular is true, then circle the number around. 
+ * This function increments or decrements the value that is in the
+ * input field by the stepSize. If the max/min is reached, check circular.
+ * If circular is true, then circle the number around.
  * we default circular for now, because we do not support it yet.
  * Else, stop at the max or min.
  */
@@ -4459,7 +4483,7 @@
       {
         alert("value, stepSize, min, and max must all be numbers. value: "+
                value+", stepSize: "+stepSize+", min: "+min+", max: "+max);
-        return false; 
+        return false;
       }
       if (increment)
       {
@@ -4467,17 +4491,17 @@
         if (incrementedValue < max)
               input.value = incrementedValue;
         else if (circular)
-              input.value = min;   
+              input.value = min;
         else input.value = max;
       }
       else
       {
         var decrementedValue = parseFloat(value) - parseFloat(stepSize);
-        
+
         if (decrementedValue > min)
           input.value = decrementedValue;
         else if (circular)
-          input.value = max; 
+          input.value = max;
         else input.value = min;
       }
       return true;
@@ -4485,9 +4509,9 @@
    return false;
 }
 
-/* This function is called when the inputNumberSpinbox component's spinbox 
+/* This function is called when the inputNumberSpinbox component's spinbox
  * buttons are released (onmouseup).
- * This function stops the spinboxTimer. 
+ * This function stops the spinboxTimer.
  * The spinboxTimer calls _stepSpinboxValue in one second increments.
  */
 function _clearSpinbox()
@@ -4497,14 +4521,14 @@
 }
 
 /**
-  * This function is called when the inputNumberSpinbox component's 
-  * spinbox buttons are pressed. This is called onmousedown. 
+  * This function is called when the inputNumberSpinbox component's
+  * spinbox buttons are pressed. This is called onmousedown.
   * It calls the _stepSpinboxValue function to increment or decrement
   * the input element's value. We call this repeatedly every second.
   * onmouseup the component calls _clearSpinbox which clears the timeout.
   */
 function _spinboxRepeat(id, increment, stepSize, min, max)
-{ 
+{
   // increment/decrement
   var success = _stepSpinboxValue(id, increment, stepSize, min, max);
   // if not successful, then clear the timeout and return
@@ -4517,7 +4541,7 @@
     if (_spinboxRepeat.functionString == null)
     {
       // setup the function to pass to the timeout.
-      _spinboxRepeat.functionString = 
+      _spinboxRepeat.functionString =
           "_spinboxRepeat('"+id+"',"+increment+
           ","+stepSize+","+min+","+max+");";
     }
@@ -4532,9 +4556,9 @@
 {
   if(typeof(event) == 'undefined')
     return window.event;
-  else     
+  else
     return event;
-  
+
   return null;
 }
 
@@ -4585,13 +4609,13 @@
 /**
  * Get the client window size.
  * TODO - make this public?
- * 
+ *
  * @return {Object} the client size of the window. The returned object will have w and h properties.
  */
 TrUIUtils._getWindowClientSize = function()
 {
   var func;
-  
+
   if (TrUIUtils['_getWinClientSize'] == null)
   {
     // IE is abnormal
@@ -4611,15 +4635,15 @@
       }
     }
   }
-  
+
   return TrUIUtils._getWinClientSize();
 }
 
 /**
  * Return the offset bounds of an element
  * TODO - make this public?
- * 
- * @param elem {String or Element} the ID of an element or an element reference 
+ *
+ * @param elem {String or Element} the ID of an element or an element reference
  * @return {Object} the returned object will have x, y, w and h properties.
  * Returns null if the element does not exist
  */
@@ -4641,8 +4665,8 @@
  * Get the location of an element in relation to the view port.
  * This will return the same co-ordinates as browser events (i.e. mouse event locations).
  * TODO - make this public?
- * 
- * @param elem {String or Element} the ID of an element or an element reference 
+ *
+ * @param elem {String or Element} the ID of an element or an element reference
  * @return {Object} the location on the page. The returned object will have x and y properties.
  * Returns null if the element does not exist
  */
@@ -4656,9 +4680,9 @@
   {
     return null;
   }
-  
+
   var func;
-  
+
   if (TrUIUtils['_getElemLoc'] == null)
   {
     // if possible, use more accurate browser specific methods
@@ -4684,7 +4708,7 @@
         var loc = { x: rect.left, y: rect.top };
         var docElem = doc.documentElement;
         var scrollLeft = docElem.scrollLeft;
-        
+
         var rtl = docElem["dir"] == "rtl";
         // IE scroll bar adjustment
         if (rtl)
@@ -4700,7 +4724,7 @@
     {
       TrUIUtils._getElemLoc = function(elem)
       {
-        var win = elem.ownerDocument.contentWindow;  
+        var win = elem.ownerDocument.contentWindow;
         // use offset* properties to determine location
         var curleft = 0;
         var curtop = 0;
@@ -4713,7 +4737,7 @@
       }
     }
   }
-  
+
   return TrUIUtils._getElemLoc(elem);
 }
 
@@ -4732,7 +4756,7 @@
       upperNext = true;
       continue;
     }
-    
+
     if (upperNext)
     {
       jsProp += prop.charAt(c).toUpperCase();
@@ -4741,10 +4765,10 @@
     {
       jsProp += prop.charAt(c);
     }
-      
+
     upperNext = false;
   }
-  
+
   return jsProp;
 }
 

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js Wed Oct 29 14:12:58 2008
@@ -6,9 +6,9 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- * 
+ *
  *  http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,18 +18,18 @@
  */
 
 /**
- * The RequestQueue class is a service to serialize the XML HTTP 
+ * The RequestQueue class is a service to serialize the XML HTTP
  * request communication from the client to the server.
  */
 function TrRequestQueue(domWindow)
-{  
+{
   this._state = TrRequestQueue.STATE_READY;
   this._requestQueue = new Array();
   // listeners that are interested in the state change of this service object
   this._stateChangeListeners = null;
   //this._iframeLoadCallback = undefined;
 
-  // Stash away the DOM window for later reference.  
+  // Stash away the DOM window for later reference.
   this._window = domWindow;
 }
 
@@ -38,7 +38,7 @@
 TrRequestQueue.STATE_BUSY = 1;
 // frame used for multi-part form post
 TrRequestQueue._MULTIPART_FRAME = "_trDTSFrame";
-  
+
 TrRequestQueue._XMLHTTP_TYPE = 0;
 TrRequestQueue._MULTIPART_TYPE = 1;
 
@@ -53,7 +53,7 @@
 
 TrRequestQueue._RequestItem = function(
   type,
-  context, 
+  context,
   actionURL,
   headerParams,
   content,
@@ -88,7 +88,7 @@
 
 TrRequestQueue.prototype._addRequestToQueue = function(
   type,
-  context, 
+  context,
   listener,
   actionURL,
   content,
@@ -98,20 +98,20 @@
   var newRequest = new TrRequestQueue._RequestItem(
                           type, context, actionURL, headerParams, content, listener);
   this._requestQueue.push(newRequest);
-  
+
   try
   {
     var dtsRequestEvent = new TrXMLRequestEvent(
                     TrXMLRequestEvent.STATUS_QUEUED,
                     null); // no xmlhttp object at this time
-                    
+
     this._broadcastRequestStatusChanged(context, listener, dtsRequestEvent);
-  }  
+  }
   catch(e)
   {
     TrRequestQueue._logError("Error on listener callback invocation - STATUS_QUEUED", e);
   }
-  
+
   if(this._state == TrRequestQueue.STATE_READY)
   {
     this._state = TrRequestQueue.STATE_BUSY;
@@ -144,7 +144,7 @@
   {
     var content = this._getPostbackContent(actionForm, params);
 
-    // IE BUG, see TRINIDAD-704  
+    // IE BUG, see TRINIDAD-704
     if(_agent.isIE && window.external)
       window.external.AutoCompleteSaveForm(actionForm);
 
@@ -169,9 +169,9 @@
   if (actionForm.enctype.toLowerCase() != "multipart/form-data")
     return false;
 
-  var inputs = actionForm.getElementsByTagName("input"), 
+  var inputs = actionForm.getElementsByTagName("input"),
       inputCount = inputs.length, multiPartForm = null;
-  
+
   for (var i = 0; i < inputCount; ++i)
   {
     var inputElem = inputs[i];
@@ -180,7 +180,7 @@
       return true;
     }
   }
-  
+
   return false;
 }
 
@@ -193,7 +193,7 @@
 TrRequestQueue.prototype._getPostbackContent = function(actionForm, params)
 {
   var formElements = actionForm.elements;
-  
+
   // 1. build up formParams
   var formParams = {};
   if (formElements)
@@ -201,7 +201,7 @@
     for (var elementIndex = 0; elementIndex < formElements.length; elementIndex++)
     {
       var input = formElements[elementIndex];
-      
+
       // todo: do not post values for non-triggering submit buttons
       // TRINIDAD-874 skip input.type="submit" fields
       if (input.name && !input.disabled && !(input.tagName=="INPUT" && input.type=="submit"))
@@ -223,11 +223,11 @@
         // if this happens to be an unselected checkbox or radio then
         // skip it. Otherwise, if it is any other form control, or it is
         // a selected checkbox or radio than add it:
-        else if (!((input.type == "checkbox" || 
-                    input.type == "radio") && 
+        else if (!((input.type == "checkbox" ||
+                    input.type == "radio") &&
                    !input.checked))
         {
-          // the value might already have been set (because of a 
+          // the value might already have been set (because of a
           // multi-select checkbox group:
           var current = formParams[input.name];
           if (current)
@@ -254,14 +254,14 @@
       }
     }
   }
-  
+
   // 2. override formParams with params
   for (var key in params)
   {
     var value = params[key];
     formParams[key] = params[key];
   }
-  
+
   // 3. create form submit payload
   var content = "";
   for (var key in formParams)
@@ -297,7 +297,7 @@
   {
     buffer = buffer + "&";
   }
-  
+
   return buffer + key + "=" + value.toString().replace(/\%/g, '%25')
                                            .replace(/\+/g, '%2B')
                                            .replace(/\//g, '%2F')
@@ -312,7 +312,7 @@
 
 /**
 * Performs Asynchronous XML HTTP Request with the Server
-* @param context    any object that is sent back to the callback when the request 
+* @param context    any object that is sent back to the callback when the request
 *  is complete. This object can be null.
 * @param method   Javascript method
 * @param actionURL   the url to send the request to
@@ -332,10 +332,10 @@
 
 /**
 * Performs Asynchronous HTTP Request with the Server for multipart data
-* @param context    any object that is sent back to the callback when the request 
+* @param context    any object that is sent back to the callback when the request
 *  is complete. This object can be null.
 * @param actionURL  this is the appropriate action url
-* @param htmlForm    the form containing multi-part data. The action attribute 
+* @param htmlForm    the form containing multi-part data. The action attribute
 *   of the form is used for send the request to the server
 * @param params     additional parameters that need to be sent to the server
 * @param method   Javascript method
@@ -365,10 +365,10 @@
     case TrRequestQueue._XMLHTTP_TYPE:
       this._doXmlHttpRequest(requestItem);
       break;
-    
-    case TrRequestQueue._MULTIPART_TYPE:    
+
+    case TrRequestQueue._MULTIPART_TYPE:
       this._doRequestThroughIframe(requestItem);
-      break;   
+      break;
   }
 }
 
@@ -379,19 +379,19 @@
   xmlHttp.__dtsRequestMethod = requestItem._method;
   var callback = TrUIUtils.createCallback(this, this._handleRequestCallback);
   xmlHttp.setCallback(callback);
-  
+
   // xmlhttp request uses the same charset as its parent document's charset.
   // There is no need to set the charset.
   xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
-  
+
   var headerParams = requestItem._headerParams;
-  
+
   if (headerParams != null)
   {
     for (var headerName in headerParams)
     {
       var currHeader =  headerParams[headerName];
-      
+
       // handle array parameters by joining them together with comma separators
       // Test if it's an array via the "join" method
       if (currHeader["join"])
@@ -400,7 +400,7 @@
       xmlHttp.setRequestHeader(headerName, currHeader);
     }
   }
-  
+
   xmlHttp.send(requestItem._actionURL, requestItem._content);
 }
 
@@ -424,10 +424,10 @@
     frameStyle.width = frameStyle.height = '1px'
     frameStyle.position = 'absolute';
     frameStyle.visibility = "hidden";
-    
+
     domDocument.body.appendChild(hiddenFrame);
   }
-  
+
   if (agentIsIE)
   {
     // Why these lines happen to work, I can't say - but remove them,
@@ -443,7 +443,7 @@
   else
   {
     iframeDoc = hiddenFrame.contentDocument;
-  }    
+  }
 
   // We may not have a document yet for the IFRAME, since
   // nothing has been loaded (appears to work this way on Safari)
@@ -456,15 +456,15 @@
   this._htmlForm = htmlForm;
   this._savedActionUrl = htmlForm.action;
   this._savedTarget = htmlForm.target;
-     
+
   // FIXME: why are the next two lines at all necessary?  The form
   // should already be set to post, and if the action has been
-  // updated since this was queued 
+  // updated since this was queued
   htmlForm.method = "POST";
   htmlForm.action = actionURL;
 
   htmlForm.target = frameName;
-  
+
   this._appendParamNode(domDocument, htmlForm, "Tr-XHR-Message", "true");
   // FIXME: the "partial" parameter is unnecessary
   this._appendParamNode(domDocument, htmlForm, "partial", "true");
@@ -476,30 +476,54 @@
       this._appendParamNode(domDocument, htmlForm, key, params[key]);
     }
   }
-  
+
   if(this._iframeLoadCallback == null)
     this._iframeLoadCallback = TrUIUtils.createCallback(this, this._handleIFrameLoad);
 
-  // IE BUG, see TRINIDAD-704  
+  // IE BUG, see TRINIDAD-704
   if(_agent.isIE && window.external)
     window.external.AutoCompleteSaveForm(htmlForm);
-  htmlForm.submit();
-  
+
+  try
+  {
+    htmlForm.submit();
+  }
+  catch (e)
+  {
+    if (this._isMultipartForm(htmlForm))
+    {
+      // IE will fail on an input file submission of a file that does not exist
+      var facesMessage = _createFacesMessage(
+        'org.apache.myfaces.trinidad.component.core.input.CoreInputFile.INPUT_FILE_ERROR');
+      // if there's nowhere to display the message in either
+      // summary or detail, then pop an alert to warn the page developer
+      if (!TrMessageBox.isPresent())
+        alert(facesMessage.getDetail());
+      else
+        // Add the message to the MessageBox
+        TrMessageBox.addMessage(null, null, facesMessage);
+    }
+    else
+    {
+      throw e;
+    }
+  }
+
   this._window.setTimeout(this._iframeLoadCallback, 50);
 }
 
 TrRequestQueue.prototype._appendParamNode = function(domDocument, form, name, value)
 {
   // assert(form!=null);
-  
+
   var nodes = this._paramNodes;
-  
+
   if(!nodes)
   {
     nodes = new Array();
     this._paramNodes = nodes;
   }
-  
+
   var node = domDocument.createElement("input");
   node.type = "hidden";
   node.name = name;
@@ -511,17 +535,17 @@
 TrRequestQueue.prototype._clearParamNodes = function()
 {
   var nodes = this._paramNodes;
-  
+
   if(nodes)
   {
     var form = nodes[0].parentNode;
     var count = nodes.length;
-    
+
     for (var i = 0; i < count; i++)
     {
       form.removeChild(nodes[i]);
     }
-    
+
     delete this._paramNodes;
   }
 }
@@ -542,10 +566,10 @@
     hiddenFrame = domDocument.getElementById(frameName);
     iframeDoc = hiddenFrame.contentDocument;
   }
-  
+
   try
   {
-    if(!iframeDoc.documentElement || !iframeDoc.documentElement.firstChild 
+    if(!iframeDoc.documentElement || !iframeDoc.documentElement.firstChild
       || (agentIsIE && iframeDoc.readyState != "complete"))
     {
       this._window.setTimeout(this._iframeLoadCallback, 50);
@@ -572,10 +596,10 @@
   requestMethod)
 {
   try
-  {    
+  {
     var dtsRequestEvent = new TrIFrameXMLRequestEvent(
                               iframeDoc);
-                
+
     this._broadcastRequestStatusChanged(context, requestMethod,dtsRequestEvent);
   }
   finally
@@ -596,10 +620,10 @@
   )
 {
   var httpState = xmlHttp.getCompletionState();
-  
+
   if(httpState != TrXMLRequest.COMPLETED)
     return;
-  
+
   var statusCode = 0;
   var failedConnectionText = TrRequestQueue._getFailedConnectionText();
   try
@@ -611,7 +635,7 @@
     // Drop the exception without logging anything.
     // Firefox will throw an exception on attempting
     // to get the status of an XMLHttpRequest if
-    // the Http connection  has been closed    
+    // the Http connection  has been closed
   }
 
   if ((statusCode != 200) && (statusCode != 0))
@@ -622,16 +646,16 @@
                           ") while performing request\n",
                          xmlHttp.getResponseText());
   }
-  
+
   try
-  { 
+  {
     if (statusCode != 0)
     {
       var dtsRequestEvent = new TrXMLRequestEvent(
                   TrXMLRequestEvent.STATUS_COMPLETE,
                   xmlHttp);
       this._broadcastRequestStatusChanged(
-        xmlHttp.__dtsRequestContext, 
+        xmlHttp.__dtsRequestContext,
         xmlHttp.__dtsRequestMethod,
         dtsRequestEvent);
     }
@@ -663,7 +687,7 @@
 
 /**
 * Adds a listener to the request queue that is interested in its state change.
-* The listners are notified in the order that they are added. A listener can cancel 
+* The listners are notified in the order that they are added. A listener can cancel
 * notification to other listeners in the chain by returning false.
 *
 * @param {function} listener  listener function to remove
@@ -673,15 +697,15 @@
 {
   // assertFunction(listener);
   // assertObjectOrNull(instance);
-  
+
   var stateChangeListeners = this._stateChangeListeners;
-  
+
   if (!stateChangeListeners)
   {
     stateChangeListeners = new Array();
     this._stateChangeListeners = stateChangeListeners;
   }
-  
+
   stateChangeListeners.push(listener);
   stateChangeListeners.push(instance);
 }
@@ -698,27 +722,27 @@
 
   // remove the listener/instance combination
   var stateChangeListeners = this._stateChangeListeners;
-  
+
   // assert(stateChangeListeners, "stateChangeListeners must exist");
 
   var length = stateChangeListeners.length;
-  
+
   for (var i = 0; i < length; i++)
   {
     var currListener = stateChangeListeners[i];
     i++;
-    
+
     if (currListener == listener)
     {
       var currInstance = stateChangeListeners[i];
-      
+
       if (currInstance === instance)
       {
         stateChangeListeners.splice(i - 1, 2);
       }
     }
   }
-  
+
   // remove array, if empty
   if (stateChangeListeners.length == 0)
   {
@@ -741,12 +765,12 @@
 TrRequestQueue.prototype._broadcastStateChangeEvent = function(state)
 {
   var stateChangeListeners = this._stateChangeListeners;
-  
+
   // deliver the state change event to the listeners
   if (stateChangeListeners)
   {
     var listenerCount = stateChangeListeners.length;
-    
+
     for (var i = 0; i < listenerCount; i++)
     {
       try
@@ -754,7 +778,7 @@
         var currListener = stateChangeListeners[i];
         i++;
         var currInstance = stateChangeListeners[i];
-        
+
         if (currInstance != null)
           currListener.call(currInstance, state);
         else

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts?rev=709009&r1=709008&r2=709009&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts Wed Oct 29 14:12:58 2008
@@ -16,7 +16,7 @@
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-	   
+
 -->
 <!DOCTYPE resources SYSTEM "rts.dtd">
 <resources xmlns="http://myfaces.apache.org/trinidad/rts" package="org.apache.myfaces.trinidadinternal.resource">
@@ -632,408 +632,408 @@
 
  <!-- MERGECAPABILITIES_ONLY_USED_WITH_AGENTS_CREATED_BY_THIS_CLASS -->
  <resource key="MERGECAPABILITIES_ONLY_USED_WITH_AGENTS_CREATED_BY_THIS_CLASS">mergeCapabilities() may only be used with Agents created by this class.</resource>
- 
+
  <!-- INVALID_NAMESPACE -->
  <resource key="INVALID_NAMESPACE">Invalid Namespace: {0}</resource>
- 
+
  <!-- INVALID_ROOT_ELEMENT -->
  <resource key="INVALID_ROOT_ELEMENT">Invalid Root Element: {0} {1}</resource>
- 
+
  <!-- UNEXPECTED -->
  <resource key="UNEXPECTED_BACKSLASH">Unexpected '\'.</resource>
- 
+
  <!-- UNEXPECTED_CHARACTER -->
  <resource key="EXPECTED_PERIOD_OR_BACKSLASH">Unexpected character. Expecting '.' or '\'</resource>
- 
+
  <!-- UNEXPECTED_CHARACTER_EXPECTING -->
  <resource key="EXPECTED_ASTERISK">Unexpected character. Expecting '*'</resource>
- 
+
  <!-- EXPECTING_CHAR -->
  <resource key="EXPECTING_CHAR">Expecting char</resource>
- 
+
  <!-- UNTERMINATED_QUOTE -->
  <resource key="UNTERMINATED_QUOTE">Unterminated quote.</resource>
- 
+
  <!-- UNEXPECTED_CHAR -->
  <resource key="UNEXPECTED_CHAR">Unexpected character</resource>
- 
+
  <!-- INVALID_SAVED_STATE_OBJECT -->
  <resource key="INVALID_SAVED_STATE_OBJECT">Invalid saved state object</resource>
- 
+
  <!-- PER_REQUEST_DISK_SPACE_LIMITS_EXCEEDED -->
  <resource key="PER_REQUEST_DISK_SPACE_LIMITS_EXCEEDED">Per-request disk space limits exceeded.</resource>
- 
+
  <!-- POPVIEW_NO_VIEW_PUSHED -->
  <resource key="POPVIEW_NO_VIEW_PUSHED">popView(): No view has been pushed.</resource>
- 
+
  <!-- POPVIEW_NO_VIEW_PUSHED -->
  <resource key=">POPVIEW_NO_VIEW_PUSHED">popView(): No view has been pushed.</resource>
- 
- 
+
+
  <!-- ONLY_HTTPSERVLETREQUEST_SUPPORTED -->
  <resource key="ONLY_HTTPSERVLETREQUEST_SUPPORTED">Only HttpServletRequest supported</resource>
- 
+
  <!-- ONLY_HTTPSERVLETRESPONSE_SUPPORTED -->
  <resource key="ONLY_HTTPSERVLETRESPONSE_SUPPORTED">Only HttpServletResponse supported</resource>
- 
+
 
  <!-- CANNOT_BE_NULL -->
  <resource key="CANNOT_BE_NULL">{0} can not be null.</resource>
- 
+
  <!-- NULL_REQUEST_ON_THIS_CONTEXT -->
  <resource key="NULL_REQUEST_ON_THIS_CONTEXT">Request is null on this context.</resource>
- 
+
  <!-- NULL_RESPONSE_ON_THIS_CONTEXT -->
  <resource key="NULL_RESPONSE_ON_THIS_CONTEXT">Response is null on this context.</resource>
- 
+
  <!-- UNSUPPORTED_CONVERSION -->
  <resource key="UNSUPPORTED_CONVERSION">Unsupported conversion from:{0} to:{1}</resource>
-  
+
  <!-- NULL_NAME -->
  <resource key="NULL_NAME">Null name</resource>
- 
+
  <!-- NULL_VALUE -->
  <resource key="NULL_VALUE">Null value</resource>
- 
+
  <!-- PUTALL_OPERATION_NOT_SUPPORTED_FOR_WRAPPING -->
  <resource key="PUTALL_OPERATION_NOT_SUPPORTED_FOR_WRAPPING">putAll operation not supported for WrappingMap</resource>
- 
+
  <!-- CLEAROPERATION -->
  <resource key="CLEAROPERATION">clear operation not supported for WrappingMap</resource>
- 
+
  <!-- PROBLEM_LOADING -->
  <resource key="PROBLEM_LOADING">Problem loading...</resource>
- 
+
  <!-- GRABBING_PIXELS -->
  <resource key="GRABBING_PIXELS">While grabbing pixels:</resource>
- 
+
  <!-- ERROR_FETCHING_IMAGE -->
  <resource key="ERROR_FETCHING_IMAGE">Error while fetching image. grabbed {0} pixel values of the {1} x {2} image.</resource>
- 
+
  <!-- EXCEEDED_GIF_COLOR_LIMIT -->
  <resource key="EXCEEDED_GIF_COLOR_LIMIT">Exceeded gif color limit.</resource>
- 
+
  <!-- NO_SPACE_LEFT_FOR_TRANSPARENCY -->
  <resource key="NO_SPACE_LEFT_FOR_TRANSPARENCY">No space left for transparency</resource>
- 
+
  <!-- DIFFERENT_LENGTHS_SOURCECOLORS_TARGETCOLORS -->
  <resource key="DIFFERENT_LENGTHS_SOURCECOLORS_TARGETCOLORS">Different lengths - sourceColors and targetColors</resource>
- 
+
  <!-- REGION_METADATA_CANNOT_NEST -->
  <resource key="REGION_METADATA_CANNOT_NEST">Cannot yet nest:{0} elements</resource>
- 
+
  <!-- DUPLICATE_RENDERER_TYPE -->
  <resource key="DUPLICATE_RENDERER_TYPE">Duplicate renderer type "{0}" for family "{1}"</resource>
- 
+
  <!-- NO_RETURNID_AVAILABLE_FOR_RETURNING_FROM_DIALOG -->
  <resource key="NO_RETURNID_AVAILABLE_FOR_RETURNING_FROM_DIALOG">No returnId is available for returning from the dialog;  this usually means that you aren't in a dialog in the first place, or that the pageFlowScope is not available.</resource>
- 
+
  <!-- TRAINRENDERER_ONLY_RENDERS_INSTANCE -->
  <resource key="TRAINRENDERER_ONLY_RENDERS_INSTANCE">TrainRenderer only renders instances of {0}, found {1}</resource>
- 
+
  <!-- SELECTONE_SUBMITTEDVALUE_INDEX_OUTSIDE_BOUNDS -->
  <resource key="SELECTONE_SUBMITTEDVALUE_INDEX_OUTSIDE_BOUNDS">SelectOne submittedValue''s index {0} is out of bounds. It should be between 0 and {1}</resource>
- 
+
  <!-- SELECTONE_CANNOT_CONVERT_SUBMITTEDVALUE_INDEX_INTO_INTEGER -->
  <resource key="SELECTONE_CANNOT_CONVERT_SUBMITTEDVALUE_INDEX_INTO_INTEGER">SelectOne could not convert submittedValue''s index {0} into int {1}</resource>
- 
+
  <!-- DONOT_CALL_THIS_FOR_COLUMN_HEADERS -->
  <resource key="DONOT_CALL_THIS_FOR_COLUMN_HEADERS">Don't call this for column headers</resource>
- 
+
  <!-- NULL_CONTEXT_URL -->
  <resource key="NULL_CONTEXT_URL">contextURI is null</resource>
- 
+
  <!-- CONTEXT_URI_ENDS_WITH_SLASH -->
  <resource key="CONTEXT_URI_ENDS_WITH_SLASH">context URI for {0} ends with a slash</resource>
- 
+
  <!-- NULL_CONTEXTPATH -->
  <resource key="NULL_CONTEXTPATH">contextPath is null {0}</resource>
- 
+
  <!-- REGISTERED_NULL_URI -->
  <resource key="REGISTERED_NULL_URI">Registered null URI</resource>
- 
+
  <!-- NULL_PATH_REGISTERED -->
  <resource key="NULL_PATH_REGISTERED">A null path was registered for {0}</resource>
- 
+
  <!-- NO_BASE_PATH_REGISTERED -->
  <resource key="NO_BASE_PATH_REGISTERED">No base path registered</resource>
- 
+
  <!-- KEYS_AND_VALUES_MUST_MATCH -->
  <resource key="KEYS_AND_VALUES_MUST_MATCH"># of keys and values must match</resource>
- 
+
  <!-- NOT_A_CHARACTER -->
  <resource key="NOT_A_CHARACTER">{0} is not a character</resource>
- 
+
  <!-- CANNOT_BE_PARSED -->
  <resource key="CANNOT_BE_PARSED">{0} cannot be parsed into a {1}</resource>
- 
+
  <!-- NULL_TYPE -->
  <resource key="NULL_TYPE">type is null</resource>
- 
+
  <!-- CANNOT_COERCE_VALUE_OF_TYPE -->
  <resource key="CANNOT_COERCE_VALUE_OF_TYPE">Could not coerce value of type {0} into type {1}</resource>
- 
+
  <!-- CANNOT_BE_COERCED -->
  <resource key="CANNOT_BE_COERCED">{0} cannot be coerced into a java.awt.Color</resource>
- 
+
  <!-- CANNOT_FIND_FILE -->
  <resource key="CANNOT_FIND_FILE">Could not find {1}</resource>
- 
+
  <!-- DECIMALFORMATCONTEXT_NOT_CLONEABLE -->
  <resource key="DECIMALFORMATCONTEXT_NOT_CLONEABLE">DecimalFormatContext is not cloneable!</resource>
- 
+
  <!-- USER_DEFINED_SUBCLASSES_NOT_SUPOORTED -->
  <resource key="USER_DEFINED_SUBCLASSES_NOT_SUPOORTED">User-defined subclasses not supported.</resource>
- 
+
  <!-- UNKNOWN_READING_DIRECTION -->
  <resource key="UNKNOWN_READING_DIRECTION">Unknown reading direction: {0}</resource>
- 
+
  <!-- FORMAT_PARSEOBJECT_FAIL -->
  <resource key="FORMAT_PARSEOBJECT_FAIL">Format.parseObject(String) failed</resource>
- 
+
  <!-- CANNOT_FORMAT_GIVEN_OBJECT_AS_A_COLOR -->
  <resource key="CANNOT_FORMAT_GIVEN_OBJECT_AS_A_COLOR">Cannot format given Object as a Color</resource>
- 
+
  <!-- ILLEGAL_PATTERN_CHARACTER -->
  <resource key="ILLEGAL_PATTERN_CHARACTER">Illegal pattern character ''{0}''</resource>
- 
+
  <!-- >ILLEGAL_PATTERN_CHARACTER -->
  <resource key=">ILLEGAL_PATTERN_CHARACTER">Illegal pattern character ''{0}''</resource>
- 
+
  <!-- CONTENT_NOT_MULTIPART_FORM_DATA -->
  <resource key="CONTENT_NOT_MULTIPART_FORM_DATA">Content is not multipart form data</resource>
- 
+
  <!-- ITEM_NOT_A_FILE -->
  <resource key="ITEM_NOT_A_FILE">Item is not a file</resource>
- 
+
  <!-- ITEM_ALREADY_BEEN_READ_PAST -->
  <resource key="ITEM_ALREADY_BEEN_READ_PAST">Item has already been read past.</resource>
- 
+
  <!-- INPUT_STREAM_ALREADY_REQUESTED -->
  <resource key="INPUT_STREAM_ALREADY_REQUESTED">Input stream has already been requested.</resource>
- 
+
  <!-- UPLOADED_FILE_EXCEEDED_MAXIMUM_ALLOWED_LENGTH -->
  <resource key="UPLOADED_FILE_EXCEEDED_MAXIMUM_ALLOWED_LENGTH">Uploaded file of length {0} bytes exceeded maximum allowed length ({1} bytes)</resource>
- 
+
  <!-- ITEM_ALREDY_BEEN_READ_PAST -->
  <resource key="ITEM_ALREDY_BEEN_READ_PAST">Item has already been read past.</resource>
- 
+
  <!-- END_OF_FILE -->
  <resource key="END_OF_FILE">End Of File</resource>
- 
+
  <!-- UNDECLARED_PREFIX -->
  <resource key="UNDECLARED_PREFIX">Undeclared prefix: {0}</resource>
- 
+
  <!-- NULL_PARSER -->
  <resource key="NULL_PARSER">parser is null</resource>
- 
+
  <!-- NULL_ROOTCLASS_ROOTPARSER -->
  <resource key="NULL_ROOTCLASS_ROOTPARSER">Both rootClass and rootParser are null</resource>
- 
+
  <!-- CIRCULAR_INCLUDE_DETECTED -->
  <resource key="CIRCULAR_INCLUDE_DETECTED">Circular include of {0} detected!</resource>
- 
+
  <!-- NULL_SKIN_ID -->
  <resource key="NULL_SKIN_ID">Null id</resource>
- 
+
  <!-- NULL_LOCALE_CONTEXT -->
  <resource key="NULL_LOCALE_CONTEXT">Null locale context</resource>
- 
+
  <!-- NULL_ICONNAME -->
  <resource key="NULL_ICONNAME">Null iconName</resource>
- 
+
  <!-- NULL_STYLESHEETNAME -->
  <resource key="NULL_STYLESHEETNAME">Null styleSheetName</resource>
- 
+
  <!-- NO_SKIN_SPECIFIED -->
  <resource key="NO_SKIN_SPECIFIED">No Skin specified.</resource>
- 
+
  <!-- NO_INPUTSTREAM -->
  <resource key="NO_INPUTSTREAM">Null inputStream</resource>
- 
+
  <!-- NULL_PARSEMANAGER -->
  <resource key="NULL_PARSEMANAGER">Null parserManager</resource>
- 
+
  <!-- REQUIRED_XSS_FILE_SOURCE_NOT_EXIST -->
  <resource key="REQUIRED_XSS_FILE_SOURCE_NOT_EXIST">Required XSS file {0} does not exist.</resource>
- 
+
  <!-- NULL_SOURCENAME -->
  <resource key="NULL_SOURCENAME">Null sourceName</resource>
- 
+
  <!-- NULL_PROPERTYNAME -->
  <resource key="NULL_PROPERTYNAME">Null propertyName</resource>
- 
+
  <!-- PROPERTYNODE_NAME_CANNOT_BE_NULL_OR_EMPTY -->
  <resource key="PROPERTYNODE_NAME_CANNOT_BE_NULL_OR_EMPTY">PropertyNode''s name cannot be null or the empty string.name is ''{0}'' and value is ''{1}''</resource>
- 
+
  <!-- CHILD_NOT_PROPERTYNODE_INSTANCE -->
  <resource key="CHILD_NOT_PROPERTYNODE_INSTANCE">child not instance of PropertyNode</resource>
- 
+
  <!-- CHIL_NOT_INCLUDEPROEPRTYNODE_INSTANCE -->
  <resource key="CHIL_NOT_INCLUDEPROEPRTYNODE_INSTANCE">child not an instance of IncludePropertyNode</resource>
- 
+
  <!-- NOT_NESTED_IN_UICOMPONENTTAG -->
  <resource key="NOT_NESTED_IN_UICOMPONENTTAG">Not nested in a UIComponentTag</resource>
- 
+
  <!-- NO_COMPONENT_ASSOCIATED_WITH_UICOMPONENTTAG -->
  <resource key="NO_COMPONENT_ASSOCIATED_WITH_UICOMPONENTTAG">No component associated with UIComponentTag</resource>
- 
+
  <!-- NAME_ATTRIBUTE_CANNOT_BE_EL_BOUND -->
  <resource key="NAME_ATTRIBUTE_CANNOT_BE_EL_BOUND">Name attribute cannot be EL bound</resource>
- 
+
  <!-- COMPOENENTDEF_CANNOT_RUN_AS_STANDALONE -->
  <resource key="COMPOENENTDEF_CANNOT_RUN_AS_STANDALONE">componentDef cannot be run as a stand-alone. It must be included inside a JSF component tree.</resource>
- 
+
  <!-- COMPONENTDEF_MUST_BE_INCLUDED_AS_CHILD_OF -->
  <resource key="COMPONENTDEF_MUST_BE_INCLUDED_AS_CHILD_OF">componentDef must be included as a child of an &lt;tr:componentRef>.</resource>
- 
+
  <!-- COMPONENTDEF_NOT_SUPPORT_EL -->
  <resource key="COMPONENTDEF_NOT_SUPPORT_EL">tr:componentDef does not support EL on 'var'</resource>
- 
+
  <!-- MUST_BE_SIMPLE_JSF_EL_EXPRESSION -->
  <resource key="MUST_BE_SIMPLE_JSF_EL_EXPRESSION">items must be a simple JSF EL expression</resource>
- 
+
  <!-- VAR_CANNOT_BE_EXPRESSION -->
  <resource key="VAR_CANNOT_BE_EXPRESSION">"var" cannot be an expression</resource>
- 
+
  <!-- VARSTATUS_CANNOT_BE_EXPRESSION -->
  <resource key="VARSTATUS_CANNOT_BE_EXPRESSION">"varStatus" cannot be an expression</resource>
- 
+
  <!-- MUST_POINT_TO_LIST_OR_ARRAY -->
  <resource key="MUST_POINT_TO_LIST_OR_ARRAY">"items" must point to a List or array</resource>
- 
+
  <!-- MUST_SPECIFY_BEGIN_AND_END -->
  <resource key="MUST_SPECIFY_BEGIN_AND_END">'begin' and 'end' should be specified if 'items' is not specified</resource>
- 
+
  <!-- MUST_NOT_HAVE_SAME_VALUE -->
  <resource key="MUST_NOT_HAVE_SAME_VALUE">'var' and 'varStatus' must not have same value</resource>
- 
+
  <!-- BEGIN_BELOW_ZERO -->
  <resource key="BEGIN_BELOW_ZERO">'begin' &lt; 0</resource>
- 
+
  <!-- STEP_BELOW_ONE -->
  <resource key="STEP_BELOW_ONE">'step' &lt; 1</resource>
- 
+
  <!-- RESETACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG -->
  <resource key="RESETACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG">ResetActionListener must be inside of a UIComponent tag.</resource>
- 
+
  <!-- RETURNACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG -->
  <resource key="RETURNACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG">returnActionListener must be inside of a UIComponent tag.</resource>
- 
+
  <!-- SETACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG -->
  <resource key="SETACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG">setActionListener must be inside of a UIComponent tag.</resource>
- 
+
  <!-- SETACTIONLISTENERS_TO_MUST_BE_EL_EXPRESSION -->
  <resource key="SETACTIONLISTENERS_TO_MUST_BE_EL_EXPRESSION">setActionListener's 'to' attribute must be an EL expression.</resource>
- 
+
  <!-- COLOR_CODE_DOES_NOT_START_WITH_POUNDSIGN -->
  <resource key="COLOR_CODE_DOES_NOT_START_WITH_POUNDSIGN">Color code {0} in ''{1}'' does not start with a ''#''</resource>
- 
+
  <!-- METHOD_CHANGED_TO_GETRENDERER -->
  <resource key="METHOD_CHANGED_TO_GETRENDERER">This method changed to getRenderer(RenderingContext, UINode)</resource>
- 
+
  <!-- REPLACED_BY_GETINDEXEDNODELIST -->
  <resource key="REPLACED_BY_GETINDEXEDNODELIST">Replaced in 2.0 by getIndexedNodeList()</resource>
- 
+
  <!-- REUSING_ROLE_INDEX -->
  <resource key="REUSING_ROLE_INDEX">Reusing role index</resource>
- 
+
  <!-- ATTEMP_TO_REGISTER_NULL_RENDERER -->
  <resource key="ATTEMP_TO_REGISTER_NULL_RENDERER">Attempt to register a null renderer for {0}</resource>
- 
+
  <!-- ONLY_CONTEXTBASEDCONFIGURATION_SUPPORTED -->
  <resource key="ONLY_CONTEXTBASEDCONFIGURATION_SUPPORTED">Only ContextBasedConfiguration is supported</resource>
- 
+
  <!-- FACET_MAY_NOT_BE_SET_AFTER_RENDERERMANAGER_HAS_BEEN_ASSIGNED -->
  <resource key="FACET_MAY_NOT_BE_SET_AFTER_RENDERERMANAGER_HAS_BEEN_ASSIGNED">The facet may not be set after the RendererManager has been assigned.</resource>
- 
+
  <!-- ILLEGAL_TO_SET_CHILDREN -->
  <resource key="ILLEGAL_TO_SET_CHILDREN">It is illegal to set children on a {0}</resource>
- 
+
  <!-- ILLEGAL_TO_ADD_CHILDREN -->
  <resource key="ILLEGAL_TO_ADD_CHILDREN">It is illegal to add children to a {0}</resource>
- 
+
  <!-- ILLEGAL_TO_REMOVE_CHILDREN -->
  <resource key="ILLEGAL_TO_REMOVE_CHILDREN">It is illegal to remove children from a {0}</resource>
- 
+
  <!-- ILLEGAL_TO_SET_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST -->
  <resource key="ILLEGAL_TO_SET_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST">It is illegal to set children on an UnmodifiableCompoundNodeList</resource>
- 
+
  <!-- ILLEGAL_TO_ADD_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST -->
  <resource key="ILLEGAL_TO_ADD_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST">It is illegal to add children to an UnmodifiableCompoundNodeList</resource>
- 
+
  <!-- ILLEGAL_TO_REMOVE_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST -->
  <resource key="ILLEGAL_TO_REMOVE_CHILDREN_ON_UNMODIFIABLECOMPOUNDNODELIST">It is illegal to remove children from an UnmodifiableCompoundNodeList</resource>
- 
+
  <!-- ADAPTER_CLASS_NOT_IMPLEMENT_BEANDOADAPTER -->
  <resource key="ADAPTER_CLASS_NOT_IMPLEMENT_BEANDOADAPTER">Adapter class doesn't implement BeanDOAdapter</resource>
- 
+
  <!-- NOT_AN_INSTANCE -->
  <resource key="NOT_AN_INSTANCE">{0} is not an instance of {1}</resource>
- 
+
  <!-- NULL_LEFTSIDEVALUE -->
  <resource key="NULL_LEFTSIDEVALUE">leftSideValue is null</resource>
- 
+
  <!-- NULL_RIGHTSIDEVALUE -->
  <resource key="NULL_RIGHTSIDEVALUE">rightSideValue is null</resource>
- 
+
  <!-- UNKNOWN_COMPARISON -->
  <resource key="UNKNOWN_COMPARISON">Unknown comparison</resource>
- 
+
  <!-- TEST_BOUNDVALUE_REQUIRED -->
  <resource key="TEST_BOUNDVALUE_REQUIRED">test BoundValue required</resource>
- 
+
  <!-- NULL_LIST_ARGUMENT -->
  <resource key="NULL_LIST_ARGUMENT">Null list argument</resource>
- 
+
  <!-- NULL_DATA_OBJECT_ARGUMENT -->
  <resource key="NULL_DATA_OBJECT_ARGUMENT">Null data object argument</resource>
- 
+
  <!-- NO_FACTORY_REGISTERED -->
  <resource key="NO_FACTORY_REGISTERED">No factory registered for {0}</resource>
- 
+
  <!-- NULL_BASESCORER -->
  <resource key="NULL_BASESCORER">Null baseScorer</resource>
- 
+
  <!-- NULL_BASESCORE -->
  <resource key="NULL_BASESCORE">Null baseScore</resource>
- 
+
  <!-- FACET_NOT_SUPPORTED -->
  <resource key="FACET_NOT_SUPPORTED">Facet {0} is not supported on {1}</resource>
- 
+
  <!-- NUMBER_OF_KEYS_AND_VALUES_MUCH_MATCH -->
  <resource key="NUMBER_OF_KEYS_AND_VALUES_MUCH_MATCH"># of keys and values much match</resource>
- 
+
  <!-- CHILD_NOT_NULL_NOT_ICONNODE_INSTANCE -->
  <resource key="CHILD_NOT_NULL_NOT_ICONNODE_INSTANCE">child is not null and not an instance of IconNode</resource>
-  
+
  <!-- NULL_FAMILY -->
  <resource key="NULL_FAMILY">Null family</resource>
- 
+
  <!-- NON_NULL_CHILD_NOT_SKINPROPERTYNODE_INSTANCE -->
  <resource key="NON_NULL_CHILD_NOT_SKINPROPERTYNODE_INSTANCE">Non-null child and child not an instance of SkinPropertyNode</resource>
- 
+
  <!-- RENDERINGCONTEXT_HAS_BEEN_CREATED -->
  <resource key="RENDERINGCONTEXT_HAS_BEEN_CREATED">RenderingContext has already been created!</resource>
- 
+
  <!-- NOT_SUPERCLASS_OF -->
  <resource key="NOT_SUPERCLASS_OF">{0} not superclass of {1}</resource>
- 
+
  <!-- UNEXPECTED_REFLECTION -->
  <resource key="UNEXPECTED_REFLECTION">Unexpected reflection exception: {0}</resource>
- 
+
  <!-- JAVASCRIPT_NOT_SUPPORT_NULL_KEYS -->
  <resource key="JAVASCRIPT_NOT_SUPPORT_NULL_KEYS">Javascript does not support null keys</resource>
- 
+
  <!-- ENCODING_UNSUPPORTED_BY_JVM -->
  <resource key="ENCODING_UNSUPPORTED_BY_JVM">Encoding: {0} is unsupported by JVM</resource>
 
  <!-- FILE_DOWNLOAD_LISTENER_REQUIRES_SERVLET -->
  <resource key="FILE_DOWNLOAD_LISTENER_REQUIRES_SERVLET">The fileDownloadActionListener only supports the Servlet API.</resource>
- 
+
  <!-- FILEDOWNLOADACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG -->
  <resource key="FILEDOWNLOADACTIONLISTENER_MUST_INSIDE_UICOMPONENT_TAG">fileDownloadActionListener must be inside of a UIComponent tag for a "command" component.</resource>
- 
+
  <!-- FILEDOWNLOADACTIONLISTENERS_METHOD_MUST_BE_EL_EXPRESSION -->
  <resource key="FILEDOWNLOADACTIONLISTENERS_METHOD_MUST_BE_EL_EXPRESSION">fileDownloadActionListener's 'method' attribute must be an EL expression.</resource>