2013-02-12 117 views
1

我使用OpenFaces庫,我想執行一些Ajax請求,例如,如果複選框爲真,則顯示TextArea,但它根本不起作用。操作原理與JSF標準庫中的相同。我會告訴你我的代碼:Java服務器Faces Ajax請求無法正常工作

<o:selectBooleanCheckbox id="addOpis" value="#{ajaxBean.opis}"> 
    <o:ajax event="click" execute="addOpis" render="opisArea"/> 
</o:selectBooleanCheckbox> 
<h:outputLabel for="dodajOpisCheckbox" value="zaznacz aby dodać opis" /> 
<o:inputTextarea id="opisArea" value="#{productBean.opis}" rendered="#{ajaxBean.opis}"/> 

ManagedBean來源:

@ManagedBean(name="ajaxBean") 
@RequestScoped 
public class AjaxBean implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private boolean opis; 

    public AjaxBean() { 
    } 

    public void setOpis(boolean opis) { 
     this.opis = opis; 
    } 

    public boolean isOpis() { 
     return opis; 
    } 

} 

我看了一些解決方案,但我的代碼似乎是不錯的,請大家幫忙。

+0

標籤裏面的代碼? – bsiamionau 2013-02-12 10:58:52

+0

是的,整個頁面都在'h:form'標籤中。爲了澄清頁面刷新時出現的textarea, – insict 2013-02-12 11:00:19

回答

1

加載後頁面上沒有編號爲opisArea的元素,因爲默認情況下rendered屬性爲false。

最簡單的方法來解決它 - 把opisArea元素中,它總是會被渲染:

<h:selectBooleanCheckbox id="addOpis" value="#{testBean.opis}"> 
    <f:ajax event="click" execute="addOpis" render="opisArea"/> 
</h:selectBooleanCheckbox> 
<h:outputLabel for="dodajOpisCheckbox" value="zaznacz aby dodać opis" /> 
<h:panelGroup id="opisArea" > 
    <h:inputTextarea value="#{productBean.opis}" rendered="#{testBean.opis}"/> 
</h:panelGroup> 
+0

它工作的很好,謝謝! – insict 2013-02-12 13:17:13

+0

@ user1853125,不客氣 – bsiamionau 2013-02-12 13:24:08