[英]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.