JSF 隐藏和显示
Posted
技术标签:
【中文标题】JSF 隐藏和显示【英文标题】:JSF Hide and show 【发布时间】:2014-07-31 02:25:07 【问题描述】:我是 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;
注意:前两次点击它正常工作,然后它不工作。
提前致谢
【问题讨论】:
我看不到带有id="test"
的组件,您正尝试使用命令按钮进行更新。
【参考方案1】:
您可以尝试使用 AJAX 而不是表单提交来完成。
您可以使用f:ajax
并更改切换成员变量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
标记的开头不可见,请注意,如果您的<h:form>
标记有id
,则需要将其附加到render
属性中
【讨论】:
谢谢,但是如果用户将值提供给相应的文本框并且在提交用户之前将其隐藏然后显示,输入的值应该显示但现在不显示。请帮助解决这个问题【参考方案2】:'update' 属性是指您页面上的 id,因此您必须声明它。请记住,您不能更新具有“渲染”属性的元素。 More info here
也可以考虑使用BooleanCheckBox
【讨论】:
以上是关于JSF 隐藏和显示的主要内容,如果未能解决你的问题,请参考以下文章