2013-10-24 61 views
0

從來就p的動態列表:selectOneRadio,即是這樣的:我該如何向我的managedbean發送p:selectOneRadio數據列表?

1 op1 op2 op3 
2 op1 op2 op3 
3 op1 op2 op3 

所以,當我讓我的提交我想知道被選定爲第1行的選項,並選擇了行的選項2和第3行選擇了哪個選項。 我的問題是我只能得到最後選擇的選項。 這裏是我的XHTML:

<ui:repeat var="o" value="#{perfilesMB.numbers}" varStatus="status"> 
    <p:selectOneRadio value="#{perfilesMB.number}"> 
     <p:ajax listener="#{perfilesMB.handleCityChange}" /> 
     <f:selectItem itemLabel="Option 1" itemValue="1" /> 
     <f:selectItem itemLabel="Option 2" itemValue="2" /> 
     <f:selectItem itemLabel="Option 3" itemValue="3" /> 
    </p:selectOneRadio>              
</ui:repeat> 

這裏是我管理的Bean:

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Arrays; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.SessionScoped; 
import org.springframework.dao.DataAccessException; 
import javax.faces.context.FacesContext; 
import javax.faces.application.FacesMessage; 
import org.primefaces.event.RowEditEvent; 

@ManagedBean(name="perfilesMB") 
//@RequestScoped 
@SessionScoped 
public class PerfilesManagedBean implements Serializable{ 
    private List<String> numbers; 
    private String number; 

    public List<String> getNumbers() { 
     return numbers; 
    } 

    public void setNumbers(List<String> numbers) { 
     this.numbers = numbers; 
    } 


    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

    //private String nivel; 
    //private int id_seccion; 

    public PerfilesManagedBean() { 
     niveles = new ArrayList<String>(); 
     numbers = new ArrayList<String>(); 
     for (int i = 0; i < 3; i++) { 
      numbers.add("" + i); 
     } 
    } 

    public String sendData(){ 
     System.out.println("Number: " + number); 
     return ""; 
    }  

} 

如何解決呢? 在此先感謝

回答

2

的關鍵是這一行:

<p:selectOneRadio value="#{perfilesMB.number}"> 

你基本上是結合所有3個選擇的項目到一個bean的屬性,根據其發送的最後請求參數其實是最後一個結束並覆蓋bean屬性。因而需要將其在

<ui:repeat ... varStatus="status"> 
    <p:selectOneRadio value="#{perfilesMB.numberSelection[status.index]}" /> 
</ui:repeat> 

與背襯

List<String> numberSelection;//initialized and equal to the amount of items in your UIRepeat component, i.e. with 3 empty strings added 
+0

由於它的工作結合的陣列或列表,數字中的對應元件,像完美 – linker85

+1

爲什麼不'值=」 #{perfilesMB.numbers [status.index]}「'? – BalusC

+0

@BalusC因爲從OP的問題來看,特別是來自bean的構造函數,這個列表應該被用於選項,也就是說,可能的''代替了硬編碼。 – skuntsel

相關問題