簡體   English   中英

PrimeFaces SelectOneMenu ajax渲染

[英]PrimeFaces SelectOneMenu ajax rendering

我的課程有什么問題? 我覺得一切都很好。 我的changeKeyValue方法獲取所選值'REFERENCE'並將true布爾值設置為showReference 但是,如果我在p:ajax使用update="targetPanel" ,我的頁面無法呈現h:panelGroup 當我使用update="entryForm"時,它可以呈現h:panelGroup

我錯過了什么?

mypage.xhtml

<h:form id="entryForm">
        <p:selectOneMenu value="#{MyBean.keyFactorValue}" required="true" style="width:257px;" id="keyFactorValue">
            <f:selectItems value="#{MyBean.selectItemList}" var="type" itemLabel="#{type.label}" itemValue="#{type}"/>  
            <p:ajax listener="#{MyBean.changeKeyValue}" update="targetPanel" event="change"/>
        </p:selectOneMenu>

        <h:panelGroup id="targetPanel" rendered="#{MyBean.showReference}">
            .......
        </h:panelGroup>

</h:form>

KeyFactorValue.java

public enum KeyFactorValue {
    REFERENCE("Reference"), FORM_TO("From-To"), FIXED("Fixed");

    private String label;

    private KeyFactorValue(String label) {
        this.label = label;
    }

    public String getLabel() {
        return label;
    }
}

MyBean.java

@Scope(ScopeType.CONVERSATION)
@Name("MyBean")
public class MyBean {
    private boolean showReference;

    public boolean isShowReference() {
        return showReference;
    }

    public KeyFactorValue[] getSelectItemList() {
        return KeyFactorValue.values();
    }

    public void changeKeyValue(AjaxBehaviorEvent e) {
        KeyFactorValue type = keyFactor.getKeyFactorValue();
        System.out.println("Selected KeyFactorValue : " + type);
        switch(type) {
            case REFERENCE :{
                showReference = true;
                break;
            }
            default :{
                showReference = false;
                break;
            }
        }
    }

}

您不能ajax更新HTML中未由JSF呈現的元素。 JavaScript(ajax背后的代碼)無法通過document.getElementById()找到它以替換其內容。

您只能ajax更新HTML中始終由JSF呈現的元素。 將有條件呈現的組件包裝在另一個始終呈現的組件中,並將其更新為ajax-update。

<h:panelGroup id="targetPanel">
    <h:panelGroup rendered="#{MyBean.showReference}">
        ...
    </h:panelGroup>
</h:panelGroup>

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM