diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
index 7356389..52e1e23 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
@@ -595,7 +595,7 @@
     public void processValidators(FacesContext context)
     {
         try {
-            processingValidators = true;
+            processingValidators = helper.skipInputValidators();
             super.processValidators(context);
         } finally {
             processingValidators = false;
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
index ae6a209..123a8eb 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
@@ -299,7 +299,7 @@
     public void processValidators(FacesContext context)
     {
         try {
-            processingValidators = true;
+            processingValidators = helper.skipInputValidators();
             super.processValidators(context);
         } finally {
             processingValidators = false;
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
index e7928bf..717393d 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
@@ -671,6 +671,11 @@
         // add Style
         setInputStyleClass(input, styleClass);
     }
+    
+    public boolean skipInputValidators()
+    {
+        return true;
+    }
 
     /**
      * Returns the value formated as a string
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
index b973291..36679ef 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
@@ -217,7 +217,7 @@
                 if (ObjectUtils.compareEqual(oe.getValue(), currentValue))
                     break;
                 // next oe
-                oe = ioe.next();
+                oe = (ioe.hasNext() ? ioe.next() : null);
             }
             if (oe == null)
             {   // remove obsolete items
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 9b9af08..c2d7625 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -1674,6 +1674,11 @@
         return this.insideUIData;
     }
     
+    public boolean skipInputValidators()
+    {
+        return (this.control!=null ? this.control.skipInputValidators() : false);
+    }
+    
     public void saveComponentId(UIComponent comp)
     {
         if (comp==null || comp.getId()==null)
diff --git a/empire-db/src/main/java/org/apache/empire/commons/Options.java b/empire-db/src/main/java/org/apache/empire/commons/Options.java
index 8bf29cd..895c824 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/Options.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/Options.java
@@ -314,7 +314,8 @@
             b.append(StringUtils.toString(e.getValue()));
             b.append("\":\"");
             b.append(e.getText());
-            b.append("\"");
+            b.append("\":");
+            b.append(e.isActive() ? "1" : "0");
             first = false;
         }    
         b.append("}");
@@ -335,6 +336,8 @@
             // Create Option Element
             Element opt = XMLUtil.addElement(element, "option", e.getText());
             opt.setAttribute("value", value);
+            if (e.isActive()==false)
+                opt.setAttribute("disabled", "true");
         }
     }
 
