2012-01-03 65 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; 
    } 
}