Jsf p:SelectOne按钮突然停止工作,第一个按钮不再可点击

Jsf p:SelectOne按钮突然停止工作,第一个按钮不再可点击,jsf,primefaces,Jsf,Primefaces,我已经成功地使用了PrimeFaces SelectOne按钮-使用了PF 3.5。 突然,它停止了工作,第一个按钮总是不可点击——网页代码和支持bean代码都没有改变,这会影响它 <p:selectOneButton value="#{bean.result}"> <f:selectItems value="#{bean.options}" /> <p:ajax eve

我已经成功地使用了PrimeFaces SelectOne按钮-使用了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 showcase:

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状态,在我的类中也没有checked='checked'

我在当前不可点击的版本上手动编辑了HTML,并删除了checked='checked'-这没有任何效果。然后,我从我的div类中删除了ui状态active,现在可以单击该按钮了

我仍然不明白为什么HTML现在呈现的方式不同,我能做些什么来改变它呢


再次感谢。

几个小时后,我终于明白了为什么

正如我在问题中所说

SelectOneButton是一个输入组件,用于使用常规命令选择选项 按钮而不是单选按钮

SelectOne按钮是单选按钮

在同一个网页中,我也使用单选按钮作为on选项,使用非常相似的代码

<p:selectOneRadio value="#{bean.result}">
<f:selectItems value="#{bean.options}" />
</p:selectOneRadio>
现在,当用户看到这些单选按钮时,我遇到了一个问题,即没有选择任何按钮。这允许用户返回null。现在,我不希望用户能够返回null,因此需要单选按钮——一个或另一个。因此,在呈现页面之前,我将{bean.result}设置为{bean.options}中的第一个元素,因此当用户看到按钮时,默认情况下会选择第一个元素


因此,当呈现selectOneButton时,第一个按钮被选中,您无法按下它。

您是否检查JS控制台是否有任何错误?是的,控制台上没有显示任何错误。