adf addpartialTarget 没有正确呈现 UI 组件
adf addpartialTarget dont render the UI component correctly
我的页面上有静态 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>
并且有一个按钮由支持 bean 上的布尔显示按钮呈现:
<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 值没有改变!
这是支持 bean 中的代码:
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();
}
}
在 Oracle ADF 中,如果您想刷新组件及其所有属性,您需要在其父组件上添加 PPR。
你的情况:
AdfFacesContext.getCurrentInstance().addPartialTarget(button.getParent());
我的页面上有静态 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>
并且有一个按钮由支持 bean 上的布尔显示按钮呈现:
<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 值没有改变! 这是支持 bean 中的代码:
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();
}
}
在 Oracle ADF 中,如果您想刷新组件及其所有属性,您需要在其父组件上添加 PPR。
你的情况:
AdfFacesContext.getCurrentInstance().addPartialTarget(button.getParent());