更改单选按钮时有条件地呈现其他组件
Posted
技术标签:
【中文标题】更改单选按钮时有条件地呈现其他组件【英文标题】:Conditionally render other component when radiobutton is changed 【发布时间】:2015-04-15 15:29:17 【问题描述】:如果选择了单选按钮,我将尝试显示菜单。我为此目的使用了渲染属性。
型号:
private int type; // +getter+setter
查看:
<h:selectOneRadio value="#bean.type">
<f:selectItem itemLabel="A" itemValue="1"/>
<f:selectItem itemLabel="B" itemValue="2"/>
</h:selectOneRadio>
<h:form id="formMention" rendered="#bean.type == 1">
<h:selectOneMenu ...>
<f:selectItems ... />
</h:selectOneMenu>
</h:form>
当我检查 A 时什么都没有显示。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:通常,您会为此使用 ajax,但由于您显然使用的是死的 JSF 1.x,它缺乏 ajax 的花哨,只要您不想要,您就可以使用“普通”html/JS引入一个支持 ajax 的组件库。其中一种方法是在单击单选按钮时直接提交表单。
<h:form>
<h:selectOneRadio value="#bean.type" onclick="this.form.submit()">
<f:selectItem itemLabel="A" itemValue="1"/>
<f:selectItem itemLabel="B" itemValue="2"/>
</h:selectOneRadio>
</h:form>
<h:form id="formMention">
<h:selectOneMenu ... rendered="#bean.type == 1">
<f:selectItems ... />
</h:selectOneMenu>
</h:form>
【讨论】:
感谢您的回答。我试过这段代码,页面根本不显示。我注意到问题出在 f:ajax 上。这可能与我正在使用的 JSF 版本有关吗? (我使用的是 1.2)? 确实如此。没有人会想到现在会使用 JSF 1.x,因为它在 5 年多前已经升级到 JSF 2.0 并且已经停产了 3 年。因此,您最好始终明确指定问题中使用的 JSF 版本。我会更新答案。以上是关于更改单选按钮时有条件地呈现其他组件的主要内容,如果未能解决你的问题,请参考以下文章