JSF隐藏和显示



我是JSF和堆栈溢出的新手,我想根据单击按钮来隐藏和显示组件。如果按钮被点击,那么组件应该是可见的,下一次它应该是不可见的,依此类推。我试过下面的程序

我的jsg页面

       <p:commandButton value="submit" action="#{exampleBean.hideOrShow}"
                        update=":test" />
       <h:inputText value="#{exampleBean.hidden}"/>
       <h:inputText value="#{exampleBean.i}"/>
       <h:panelGroup layout="block" rendered="#{exampleBean.hidden}">
            <div>
                Hello,<h:inputText value="hi"/>
                testing,<h:inputText />
                addr:<h:inputText/>
                </div>
        </h:panelGroup> 
   </h:form>

我的豆

public void hideOrShow(){
 if (!hidden)
 {
    i++; 
    hidden=true;
 }
 else
 {
    i++; 
    hidden=false;
 }


   }
/**
 * @return the hidden
 */
public boolean isHidden() {
    return hidden;
}
/**
 * @param hidden the hidden to set
 */
public void setHidden(boolean hidden) {
    this.hidden = hidden;
}
/**
 * @return the i
 */
public int getI() {
    return i;
}
/**
 * @param i the i to set
 */
public void setI(int i) {
    this.i = i;
}
}

注意:前两次点击它工作正常,然后它不工作。

Thanks in Advance

您可以尝试使用AJAX代替表单提交。您可以使用f:ajax并更改toggle成员变量hidden值,并使用render属性来更新panelGroup

你可以试试

<p:commandButton value="submit">
  <f:ajax listener="#{exampleBean.hideOrShow}" event="click" render="panel1"></f:ajax>
</p:commandButton>

并在panelGroup

中添加一个'id'属性
<h:panelGroup layout="block" rendered="#{exampleBean.hidden}" id="panel1">
            <div>
                Hello,<h:inputText value="hi"/>
                testing,<h:inputText />
                addr:<h:inputText/>
                </div>
</h:panelGroup>

希望有帮助!

注意:因为你的form标签不可见的开始,只是要知道,如果你有id为你的<h:form>标签,那么你需要在render属性

'update'属性引用页面上的id,因此必须声明它。记住,你不能更新具有'rendered'属性的元素。更多信息在这里

还可以考虑使用BooleanCheckBox

相关内容

  • 没有找到相关文章

最新更新