我使用OpenFaces库,我想执行一些ajax请求,例如如果复选框为true,则显示TextArea
,但它根本不起作用。操作原理与JSF标准lib中的相同。我会告诉你我的代码:
<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 :(得分: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>