2012-02-28 6 views
1

Я новичок в этом, поэтому вы можете все помочь мне.JSF 2.0 и флажки

В моей Java класс,

public String mycheckbox; 
// setters and getters for mycheckbox 

В моей форме,

<input id="f2_chk_1" type="checkbox" value="1" name="f2_chk_1"> 
1 
<br> 
<input id="f2_chk_2" type="checkbox" value="2" name="f2_chk_2"> 
2 
<br> 
<input id="f2_chk_3" type="checkbox" value="3" name="f2_chk_3"> 
3 
<br> 
<input id="f2_chk_4" type="checkbox" value="4" name="f2_chk_4"> 
4 
<br> 
<input id="f2_chk_5" type="checkbox" value="5" name="f2_chk_5"> 
5 
<br> 
<input id="f2_chk_6" type="checkbox" value="6" name="f2_chk_6"> 
MT 
<br> 
<input id="f2_chk_7" type="checkbox" value="7" name="f2_chk_7"> 
6 

Что я хочу, когда я проверить флажок, mycheckbox должен автоматически получить значение; проверяются даже несколько флажков.

Я googled, но придумал примеры, где флажки определены в самом классе java и вещах, которые для меня не имеют смысла.

ответ

2

Вы можете использовать <h:selectManyCheckbox> компонент для этого с List<String> в качестве доступных значений и другой List<String> в качестве проверяемых значений. Вот полный пример стартового, который достигает ваше первоначальное требование:

Вид:

<h:form> 
    <h:selectManyCheckbox value="#{bean.checkedValues}" layout="pageDirection"> 
     <f:selectItems value="#{bean.availableValues}" /> 
    </h:selectManyCheckbox> 
    <h:commandButton value="submit" action="#{bean.submit}" /> 
</h:form> 

Bean:

@ManagedBean 
@ViewScoped 
public class Bean { 

    private List<String> checkedValues; 
    private List<String> availableValues; 

    @PostConstruct 
    public void init() { 
     availableValues = new ArrayList<String>(); 
     availableValues.add("1"); 
     availableValues.add("2"); 
     availableValues.add("3"); 
     // ... 
    } 

    public void submit() { 
     System.out.println("Checked values: " + checkedValues); 
    } 

    public List<String> getCheckedValues() { 
     return checkedValues; 
    } 

    public void setCheckedValues(List<String> checkedValues) { 
     this.checkedValues = checkedValues; 
    } 

    public List<String> getAvailableValues() { 
     return availableValues; 
    } 

} 
+0

только то, что мне нужно! –

1

Во-первых, Вы должны изменить тип переменной в классе Java для булево

public boolean myCheckbox; 

Вы можете просмотреть полный закодированный пример здесь mkyong checkbox jsf-2

Во-вторых, заказовМои к выберите один флажок, если другие проверяются, вы можете использовать javascript и действовать после того, как флажок установлен. \ unchecked

<h:selectBooleanCheckbox value="#{Class.Varible}" onselect="checkCheckbox()" /> 

и создать функцию js, которая реализует бизнес-логику.

function checkCheckbox(){ 

    // if at least one checkbox is checked, check specific checkbox 


} 

Вы должны рассмотреть возможность использования selectManyCheckbox.

Надеется, что это помогает

+0

возможно есть что-то более конкретное и лучше, чем это? Кроме того, он задает длину массива, который я не могу использовать, возможно, – sameer

+0

@sameer Отредактированный ответ. надеюсь, это поможет –

+0

не удовлетворены этим, но спасибо за ваше время – sameer

0

Аба Д ссылки довольно хорошо я думаю. Я не понимаю, что тебе нужно что-то лучше. Но вы можете определить список variabel и позволить этому списку отображать флажки.

в вашем бобе

private ArrayList<SelectItem> items; 

public ArrayList<SelectItem> getItems(){ 
    items = new ArrayList<SelectItem>(); 
    items.add(new SelectItem(<value>, <description>); 
    ... 
    items.add(new SelectItem(<value>, <description>); 
    return items 
} 

и в вашей странице JSF

<h:selectManyCheckbox value="#{<yourbean>.checkboxvalue}"> 
<f:selectItems value="#{<yourbean>.items}" /> 
<h:selectManyCheckbox />