2013-02-12 151 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