我已经成功地使用了 PrimeFaces selectOneButton - 使用 PF 3.5。突然,它停止了工作,第一个按钮总是不可点击——网页代码和支持 bean 代码都没有变化(这会影响它)。
<p:selectOneButton value="#{bean.result}">
<f:selectItems value="#{bean.options}" />
<p:ajax event="change" process="popupPanel"
update="Grid"
listener="#{myBackingBean.submitItem(bean.itemId)}" />
</p:selectOneButton>
我有一个关于为什么第一个按钮不可点击的理论。
来自 PrimeFaces SelectOneButton 展示:
SelectOneButton 是一个输入组件,用于使用常规按钮而不是单选按钮来选择选项
所以,SelectOneButton确实是单选按钮,但显示时触感很好;)
现在,带有两个选项的 selectOneButton 的渲染 HTML 如下;
<div class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-active">
<input id="mainForm:Grid:0:j_idt64:0" name="mainForm:Grid:0:j_idt64" type="radio" value="Yes" class="ui-helper-hidden" checked="checked">
<span class="ui-button-text ui-c">Yes</span>
</div>
<div class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right">
<input id="mainForm:Grid:0:j_idt64:1" name="mainForm:Grid:0:j_idt64" type="radio" value="No" class="ui-helper-hidden">
<span class="ui-button-text ui-c">No</span>
</div>
我注意到两个不同... 1) div 类是不同的。2)第一个选项已检查=“检查”
1)检查 div 类的 CSS,我看不到任何会使按钮无法点击的主要内容。2)显然,因为它真的是一个单选按钮,所以第一个选项是“选中”。
现在,当单击一个普通的旧标准单选按钮时,您不能单击它来“释放它” - 一旦单击它就被单击,并且需要单击其他单选按钮来更改选项。
由于我的第一个选项总是“选中”,这会阻止按钮“可点击”吗?有没有其他人经历过类似的事情?环顾四周,我似乎是唯一遇到此问题的人。
我可以做变通方法,但我不知道为什么它突然停止工作,宁愿找到解决方案!
任何帮助表示赞赏!
更新
幸运的是,我找到了我的 webapp 的旧版本,并检查了呈现的 HTML。
这是第一个按钮的以下 HTML(在我当前的版本中无法点击)。
<div class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left">
<input id="mainForm:Grid:0:j_idt63:0" name="mainForm:Grid:0:j_idt63" type="radio" value="Yes" class="ui-helper-hidden">
<span class="ui-button-text ui-c">Yes</span>
</div>
我上面描述的两个区别在我以前的版本中没有呈现 - div 类中没有“ui-state-active”,我的也没有“checked='checked'”<input />
我在当前(不可点击的)版本上手动编辑了 HTML,并删除了“checked='checked'”——这没有效果。然后我从我的 div 类中删除了“ui-state-active” - 现在该按钮是可点击的。
我仍然对为什么 HTML 现在呈现不同的方式感到困惑,我可以改变什么来实现这一点?
再次感谢。