Значение по умолчанию сохраняется в другом столбце на основе значения, выбранного из LOV - PullRequest
0 голосов
/ 19 ноября 2018

Таблица- Items

Столбцы-Порядок_Тип

               (Sales,
               Return,
               Defective)

Order_Type_Id (1,2,3) т.е. 1-продажи, 2-Return, 3 Дефектные

VO имеет Transient attribute-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);
    }

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Следующий код работал. Запись следующего кода в 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

0 голосов
/ 19 ноября 2018

Предполагается, что LOV VO также из запроса, а не из статического списка:

Разработано в АПД 11g

OrderTypeLOVVO:

  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.attributeValu e, потому что когда вы выбираете OrderTypeId в качестве продаж (это inputValue ), то значение бэкенда (id ) равен 1. поэтому attributeValue получит идентификатор выбранного значения в LOV.

То же самое работает и со статическим списком VO.

В соответствии с вашим требованием, В программно,

Я создал метод для прослушивания изменения значения LOV,

changeValue() - метод в классе бобов.

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.

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 параметр - это значение, которое будет вводиться из класса бина (выбранное значение из LOV) и возвращать параметр String, который вам понадобится снова в классе бина.

Поэтому, когда вы выбираете значение в LOV, он вызывает метод прослушивателя изменения значения (changeValue ()) и переходит к AppModule. В AppModule значение будет присвоено и возвращено в класс Bean.

Но это не будет отражаться до тех пор, пока вы не обновите компонент страницы.

<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 имеет значение true.

<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 (который объявлен в бине). Также была создана привязка для метки вывода. PartialTrigger присваивается LOV, так как outputLabel зависит от LOV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...