我是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;
}
}
注意:前两个点击它正常工作然后它无法正常工作。
先谢谢
答案 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