为 ADF 中的下拉菜单设置默认值

时间:2021-05-13 05:44:32

标签: java oracle11g oracle-adf

在 jsff 文件中,已经设计了一个组件,并且正在从静态 VO 中获取值。静态 Vo 中只有两个值。我需要将第一个选项设置为默认值。但是正在设置一个空值。我写了一个条件来禁用它。当它被禁用时,该值必须设置为第一个。

我尝试过 List UI Hints 并尝试启用 Include No selection item: Labeled Item first of list,我尝试创建一个只有一个值的新 vo 并在 Jsff 中呈现它(但它会使代码更多复杂的未来发展)我曾尝试创建切换器。但他们都没有按预期工作。

任何人都可以向我建议一种替代方案,其中代码复杂性不会增加,并且默认情况下选择了第一个值。如果jsff中有disable标签的条件为真则disable。

PS:一旦该字段被禁用,第一个值必须是默认设置的默认值。

1 个答案:

答案 0 :(得分:1)

在不向视图对象添加代码的情况下,似乎没有任何默认方法可以使用 Oracle ADF 执行此操作。以下是在 ADF LOV 中自动选择第一个值的方法(详情见此处 https://cedricleruth.com/autoselect-first-value-in-adf-lov-inside-a-table/):

  • 生成您的视图对象和静态 VO 的 RowImpl Java 类
  • 在此 RowImpl.java 中添加以下函数以在尚未选择任何值时返回第一个值
public String defaultNextStatus() {
 String value = (String) getAttributeInternal(AttributesEnum.NextStatus.index());
 if (value == null) {
  XxcrWorkflowUvVORowImpl nextStatut = (XxcrWorkflowUvVORowImpl) getWfkVA().first(); 
  //Wkfva is the VO of the LOV
  if (nextStatut != null) {
   return nextStatut.getTxtValeur();
  }
 }
 return value;
}
  • 在属性的细节面板中添加以下默认值表达式:adf.object.defaultNextStatus()
  • 在属性的Detail面板中,将refresh Expression Value设置为false,以避免在ppr/refresh的情况下再次选择第一个值