JSF隐藏和显示

时间:2014-06-10 10:45:38

标签: jsf primefaces

我是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;
}
}

注意:前两个点击它正常工作然后它无法正常工作。

先谢谢

2 个答案:

答案 0 :(得分:3)

您可以尝试使用AJAX而不是表单提交来完成。 您可以使用f:ajax并更改切换成员变量hidden值并使用render属性更新panelGroup

这是你可以尝试的东西

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

并添加一个&#39; id&#39; panelGroup中的属性

<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>,则需要将其附加到{{1}属性

答案 1 :(得分:0)

'update'属性引用页面上的id,因此您必须声明它。请记住,您无法更新具有“呈现”属性的元素。 More info here

另请考虑使用BooleanCheckBox