2012-01-03 38 views
0

我正在JSF中创建注册表单,并且我有字段为活动,非活动状态,我需要使用复选框,这些复选框应该是单选。 (注意:我可以使用单选按钮来解决问题,但由于某些问题我必须使用复选框)。使用JSF的单选复选框

请告诉我如何完成这项工作?

在此先感谢...

+0

*“但是由于某些问题”*哪个问题?为什么不解决这个问题,以便您可以使用单选按钮而不是使用复选框进行黑客入侵?另外,请明确提及您使用的是哪个JSF版本。在这个问题上你有两个JSF 1.2和2.0标签。这很混乱。你应该只有其中一个。你正在使用哪个JSF版本? – BalusC 2012-01-03 12:24:37

+0

我使用JSF 2.0 .. 其实我不得不创建一个程序,我被要求只使用复选框,而不是单选按钮...因此我正在寻找复选框的解决方案... – 2012-01-03 13:08:28

+0

请删除不正确的JSF 1.2标记。至于复选框和单选按钮,那么问题显然只是客户/经理的无知。作为开发人员,您只需向客户解释复选框用于多选,单选按钮即可。 – BalusC 2012-01-03 13:11:14

回答

1

我想你需要的是<h:selectBooleanCheckbox>。绑定到此组件的值只能为真(活动)或假(非活动)。它会像下面这样:

<h:selectBooleanCheckbox id="active" value="#{mrBean.active}" > 
    <f:ajax render="inactive" listener="#{mrBean.onActiveStatusChange}" /> 
</h:selectBooleanCheckbox> 
<h:selectBooleanCheckbox id="inactive" value="#{mrBean.inactive}" > 
    <f:ajax render="active" listener="#{mrBean.onInactiveStatusChange}" /> 
</h:selectBooleanCheckbox> 

@ManagedBean 
@RequestScoped 
public class MrBean { 
    private boolean active; 
    private boolean inactive; 

    @PostConstruct 
    public void prepareMrBean() { 
     this.active = true; 
    } 

    public void onActiveStatusChange() { 
     if (active) inactive = false; 
    } 

    public void onInactiveStatusChange() { 
     if (inactive) active = false; 
    } 
}