我想确保 ap:selectOneRadio 在需要时以某种方式突出显示,但没有选择任何内容。目前,页面顶部会添加错误消息,但不会向任何组件添加错误类。这使得用户在有大量输入时更难发现问题。
编辑:在示例中添加了附加信息
例子
<div class="options-item r">
<fieldset class="default-radio">
<legend for="default_radio_id" class="legend-txt">
<span class="required c">*</span>#{msg['label.legend']}
</legend>
<p:selectOneRadio id="default_radio_id"
label="#{msg['label']}" required="true"
layout="custom"
value="#{bean.value.defaultIsFalse}">
<f:selectItem itemLabel="#{msg['label.option1']}"
itemValue="#{true}"/>
<f:selectItem itemLabel="#{msg['label.option2']}"
itemValue="#{true}"/>
</p:selectOneRadio>
<h:panelGrid styleClass="some_class another_radio_class" columns="4">
<p:radioButton id="opt1aa" for="default_radio_id" itemIndex="0"/>
<h:outputLabel styleClass="txt" for="opt1aa"
value="#{msg['label.option1']}"/>
<p:radioButton id="opt1bb" for="default_radio_id" itemIndex="1"/>
<h:outputLabel styleClass="txt" for="opt1bb"
value="#{msg['label.option2']}"/>
</h:panelGrid>
<!-- some other non relevant things? -->
</fieldset>
</div>
我正在使用primefaces 3.5
有什么方法可以确保将某种错误类(例如“ui-state-error”)添加到选择单选中,或者是否有其他模式用于识别丢失的单选选择?
Edit2:为解决方案添加了额外的 bean 定义
对于那些不知道这是您需要对 bean 定义进行修改以使解决方案工作的人。
private UIInput radioButton;
public UIInput getRadioButton() {
return radioButton;
}
public void setRadioButton(UIInput radioButton) {
this.radioButton = radioButton;
}
Edit3:在 Edit2 上添加了评论和完整的解决方案
事实证明,您不需要在任何预先存在的支持 bean 中定义 UIInput 即可将绑定锁定到。如果您需要从 bean 内部访问它,您只需要编辑现有 bean 之一。
解决方案:
<div class="options-item r">
<fieldset class="default-radio">
<legend for="default_radio_id" class="legend-txt">
<span class="required c">*</span>#{msg['label.legend']}
</legend>
<p:selectOneRadio id="default_radio_id" binding="#{anyUnusedBeanName}"
label="#{msg['label']}" required="true"
layout="custom"
value="#{bean.value.defaultIsFalse}">
<f:selectItem itemLabel="#{msg['label.option1']}"
itemValue="#{true}"/>
<f:selectItem itemLabel="#{msg['label.option2']}"
itemValue="#{true}"/>
</p:selectOneRadio>
<h:panelGrid styleClass="some_class another_radio_class #{anyUnusedBeanName.valid ? '' : 'ui-state-error'}" columns="4">
<p:radioButton id="opt1aa" for="default_radio_id" itemIndex="0"/>
<h:outputLabel styleClass="txt" for="opt1aa"
value="#{msg['label.option1']}"/>
<p:radioButton id="opt1bb" for="default_radio_id" itemIndex="1"/>
<h:outputLabel styleClass="txt" for="opt1bb"
value="#{msg['label.option2']}"/>
</h:panelGrid>
<!-- some other non relevant things? -->
</fieldset>
</div>