adf addpartialTarget неправильно отображает компонент пользовательского интерфейса - PullRequest
1 голос
/ 28 сентября 2019

У меня на странице есть статическая LOV со следующим кодом:

 <af:selectOneChoice id="soc4" autoSubmit="true" valueChangeListener="#{pageFlowScope.Bean.change}"  required="true">
     <f:selectItem itemLabel="#{viewcontrollerBundle.occ}" itemValue="1"/>
      <f:selectItem itemLabel="#{viewcontrollerBundle.leave}" itemValue="2"/>
      <f:selectItem itemLabel="#{viewcontrollerBundle.hold}" itemValue="3"/>
   </af:selectOneChoice>

, и на бобе поддержки есть кнопка, которая отображается с помощью логического showbutton:

       <af:button bindings="#{pageFlowScope.bean.button}" partialTriggers="soc4" actionListener="#{bindings.CreateWithParams.execute}" 
        text="#{viewcontrollerBundle.insert}"
        rendered="#{pageFlowScope.LandsCostsBean.showbutton}" id="b2"/>

и в valueChangeListener я изменяю showbutton на true и пытаюсь обновить кнопку, чтобы отобразить ее, но она не работала правильно, так как значение showbutton не изменилось!и этот код в бобе поддержки:

      public void change(ValueChangeEvent vce) {
    try {
        Number type= new Number(vce.getNewValue());
        rangeType=landType;
        showbutton=true; 
        filterLandRangeCostByType(landType); 
        button.setVisible(true);
        AdfFacesContext.getCurrentInstance().addPartialTarget(button);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

1 Ответ

1 голос
/ 30 сентября 2019

В Oracle ADF, если вы хотите обновить компонент и все его атрибуты, вам нужно добавить PPR на его родительский компонент.

В вашем случае:

AdfFacesContext.getCurrentInstance().addPartialTarget(button.getParent());
...