EMPIREDB-422
SelectInputControl setItemLabel
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 89ad71e..2f4573f 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
@@ -280,16 +280,15 @@
return;
}
if (ObjectUtils.compareEqual(ov, oe.getValue()))
- { // next
- si.setLabel(oe.getText());
+ { // update label and continue
+ setItemLabel(si, textResolver, oe);
oe = (ioe.hasNext() ? ioe.next() : null);
continue;
}
// Not equal - do a full reload
input.getChildren().clear();
if (hasEmpty)
- {
- // add empty entry
+ { // add empty entry
addSelectItem(input, textResolver, new OptionEntry("", getNullText(ii)));
}
for (OptionEntry opt : options)
@@ -319,7 +318,7 @@
}
@SuppressWarnings("unchecked")
- public void addSelectItem(UIComponent input, TextResolver textResolver, OptionEntry e, int pos)
+ public void addSelectItem(UIComponent input, TextResolver textResolver, OptionEntry oe, int pos)
{
List<UIComponent> children = input.getChildren();
// UISelectItems
@@ -342,19 +341,17 @@
Object valueExpressionFlag = input.getAttributes().get(SelectInputControl.VALUE_EXPRESSION_FLAG);
if (ObjectUtils.getBoolean(valueExpressionFlag))
{ // Use formatted value
- value = formatInputValue(e.getValue());
+ value = formatInputValue(oe.getValue());
}
else
{ // Convert to String
- value = e.getValueString();
+ value = oe.getValueString();
}
// create and add item
SelectItem selectItem = new SelectItem();
selectItem.setValue(value);
// set text
- String text = e.getText();
- text = textResolver.resolveText(text);
- selectItem.setLabel(text);
+ setItemLabel(selectItem, textResolver, oe);
// add item
if (pos>=0)
list.add(pos, selectItem);
@@ -367,6 +364,17 @@
addSelectItem(input, textResolver, e, -1);
}
+ protected void setItemLabel(SelectItem si, TextResolver textResolver, OptionEntry oe)
+ {
+ String text = oe.getText();
+ // only update if text is not a message key
+ if (si.getLabel()!=null && text!=null && text.startsWith(TextResolver.MSG_KEY_INDICATOR))
+ return;
+ // set label
+ text = textResolver.resolveText(text);
+ si.setLabel(text);
+ }
+
protected String getNullText(InputInfo ii)
{
String nullText = getFormatString(ii, InputControl.FORMAT_NULL, InputControl.FORMAT_NULL_ATTRIBUTE);