根据从 LOV 选择的值,默认值存储在另一列中

Default value gets stored in another column based on value selected from LOV

Table-Items

Columns-Order_Type

               (Sales,
               Return,
               Defective)

Order_Type_Id(1,2,3) 即 1-销售, 2-Return, 3-次品

VO 具有 Transient 属性 - OrderType,其 LOV 显示 Order_Type。 根据选择的 Order_Type,Order_Type_Id 应该存储在 Order_Type_Id 列

public Number getOrder_Type_Id() {
    String orderType = null;
    Number orderNumber = null;
    if (getOrderType() != null) {
        orderType = getOrderType();
        if (orderType.equals("Sales")) {
            orderNumber = new oracle.jbo.domain.Number(2);
        } else if (orderType.equals("Return")) {
            orderNumber = new oracle.jbo.domain.Number(3);
        } else if (orderType.equals("Defective")) {
            orderNumber = new oracle.jbo.domain.Number(4);
        }
        this.setOrder_Type_Id(orderNumber);
    }

假设 LOV VO 也来自查询而不是来自静态列表:

它是在 ADF 11g 中开发的

订单类型LOVVO :

  order_type_id  - back-end stored column
  order_type_desc - display column

BaseOrderVO

OrderTypeId - transient attribute - LOV - OrderTypeLOVVO 
OrderTypeDesc - transient attribute - OutputText column with default value - 1

orderTypeId

  - Make autoSubmit property true in both places in VO and in jsff page ( drop it as select one choice) .
  - OrderTypeId value will be bindings.orderTypeId.inputValue

  -  Shuffle the dependent attribute Order_type_desc from left to right in dependecies component of VO.

OrderTypeDesc

  Make default value as 1 and in jsff page set partial trigger dependent of orderTypeId after dropping it as output label.
  Make OrderTypeDesc value attribute as bindings.orderTypeId.attributeValue 

我们需要将 OrderTypeDesc 值设置为 orderTypeId.attributeValue 因为当您 select OrderTypeId 为 sales (这是 inputValue),所以后端值 (id) 是 1。所以 attributeValue 将得到 selected 值的 id爱

同样适用于静态列表 VO。

根据您的要求,以编程方式,

我已经在 LOV 的值更改侦听器上创建了一个方法,

changeValue()是bean中的方法class.

public void changeValue(ValueChangeEvent valueChangeEvent) {
    AppModuleImpl module = getApp(); // creating appModuleImpl class object
    //definition for getApp() is given below.

    item_desc = module.assignValue(valueChangeEvent.getNewValue().toString());
    // This item_desc value is declared globally.

    //assignValue method of AppModuleClass is given below
    bind_item_desc.setValue(item_desc);
    AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
    adfFacesContext.addPartialTarget(bind_item_desc);
     // bind_item_desc is the binding attribute of output label which needs to be refreshed.
    // Add event code here...
}
public static AppModuleImpl getApp() {
    return (AppModuleImpl)Configuration.
            createRootApplicationModule(
            "Model.AppModule", // where your module is stored
            "AppModuleShared"); // chosen configuration
}

这里Model.AppModule是AppModule的位置

assingValue() 的 AppModuleClass,它将根据 LOV 中的 selected 值分配值。

public String assignValue(String value)
{
    String item_desc=null;
    System.out.println("Changed value " + value);
    if(value.equals("Sales"))
    {
    item_desc="14";
    }
    return item_desc;
}

在 assignValue 中,参数是将从 bean class 输入的值(来自 LOV 的 selected 值)并返回 bean [= 中再次需要的字符串参数70=].

因此,当您 select LOV 中的值时,它将触发值更改侦听器方法 (changeValue()) 并将导航到 AppModule 。在 AppModule 中,值将被赋值并返回给 Bean class。

但它不会反映,直到您不会刷新页面组件。

<af:selectOneChoice value="#{bindings.item_id_lov.inputValue}"
                    label="item for lov"
                    required="#{bindings.item_id_lov.hints.mandatory}"
                    shortDesc="#{bindings.item_id_lov.hints.tooltip}"
                    id="soc4" autoSubmit="true"
                    valueChangeListener="#{bean1.changeValue}">
  <f:selectItems value="#{bindings.item_id_lov.items}" id="si4"/>
</af:selectOneChoice>

此处在 SelectOneChoice 中调用值更改侦听器并且 autoSubmit 为真。

<af:panelLabelAndMessage label="item description"
                         id="plam1" partialTriggers="soc4">
  <af:outputFormatted value="#{bean1.item_desc}" binding="#{bean1.bind_item_desc}"
                      id="of1"/>
</af:panelLabelAndMessage>

此处,在 value 中分配了 item_desc 属性(在 bean 中声明)。还为输出标签创建了绑定。 PartialTrigger 分配给 LOV,因为 outputLabel 取决于 LOV。

以下代码有效。 在 Order_Type_Id 中编写以下代码:

public Number Order_Type_Id()
{ 
String orderType=null;
Number orderNumber=null;
if(getOrder_Type()!=null){
orderType=getOrder_Type();
if(orderType.equals("Sales")){
orderNumber=new oracle.jbo.domain.Number(2);
}
else if(orderType.equals("Defective")){
orderNumber=new oracle.jbo.domain.Number(3);
return orderNumber;
}
else
{
return (Number)getAttributeInternal(Order_Type_Id);}
}
}

在Order_Type_Id属性中添加依赖或者Order_Type