EMPIREDB-348
render Value when field is readonly, but allow override with value "never"
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 cdfbecd..9f39584 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
@@ -82,7 +82,7 @@
// copy Attributes
copyAttributes(parent, ii, input);
// disabled
- boolean disabled = ii.isDisabled();
+ boolean disabled = ii.isDisabled() || ii.isFieldReadOnly();
input.setDisabled(disabled);
// Options
initOptions(input, ii.getTextResolver(), ii);
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 75a683c..8fea07a 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
@@ -351,24 +351,11 @@
@Override
public boolean isFieldReadOnly()
- { // Check Record
- if (isRecordReadOnly())
- return true;
- // Check tag
+ { // Check tag
if (!(component instanceof UIInput))
return true;
- // Check Record
- if ((getRecord() instanceof Record))
- { // Ask Record
- Record r = (Record) record;
- return r.isFieldReadOnly(getColumn());
- }
- // override
- Object val = getTagAttributeValue("readonly");
- if (val!=null)
- return ObjectUtils.getBoolean(val);
- // column
- return getColumn().isReadOnly();
+ // column read only
+ return TagEncodingHelper.this.isReadOnly();
}
@Override
@@ -812,28 +799,36 @@
public boolean isRenderValueComponent()
{
- return isRecordReadOnly();
+ return isReadOnly();
}
public boolean isRecordReadOnly()
{
- // check attribute
- Object val = getTagAttributeValue("readonly");
- if (val != null && ObjectUtils.getBoolean(val))
- return true;
// Do we have a record?
if (getRecord() instanceof RecordData)
- { // Only a RecordData?
- if (!(record instanceof Record) || ((Record) record).isReadOnly())
+ { // Only a RecordData?
+ if (!(record instanceof Record))
return true;
}
else if (!hasValueExpression())
- { // No Value expression given
+ { // No Value expression given
return true;
}
- // Check Component
+ // check attribute
+ Object val = getTagAttributeValue("readonly");
+ if (val != null)
+ { // check
+ if (StringUtils.valueOf(val).equalsIgnoreCase("never"))
+ return false;
+ if (ObjectUtils.getBoolean(val))
+ return true;
+ }
+ // check record component
if (recordTag != null && recordTag.isReadOnly())
return true;
+ // Do we have a record?
+ if ((record instanceof Record) && ((Record)record).isReadOnly())
+ return true;
// column
return false;
}