2017-03-15 1 views
0

Ich bin neue jsf. Ich fülle Combo-Boxen dynamisch nach hochgeladenen TXT. Aber wenn ich ausgewählte Combo-Box-Werte erhalten möchte. Ich recherchiere es und habe meinen Code angewendet, aber es funktioniert nicht. Die ausgewählte Zeichenfolge gibt immer null zurück.Wie Wert von OneSelectMenu

 <p:dataTable id="cellEditingTable" var="message" 
     value="#{messageTableController.menuList}" paginator="true" 
     paginatorPosition="bottom" editable="true" editMode="cell"> 
     <f:facet name="header"> 
     PRE_INSTALL 
     </f:facet> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Value" /> 
      </f:facet> 
      <h:outputText value="#{message.value}" /> 
     </p:column> 
     <p:column> 
      <f:facet name="header"> 
       <h:outputText value="Assign" /> 
      </f:facet> 
      <p:selectOneMenu value="#{messageTableController.selected}" 
       style="width:96%"> 
       <f:selectItem itemLabel="#{message.assign}" itemValue="1" /> 
       <f:selectItem itemLabel="#{message.combo}" itemValue="2" /> 
      </p:selectOneMenu> 
     </p:column> 
    </p:dataTable> 
    <br /> 
    <h:commandButton value="Submit Training" 
     action="#{messageTableController.submitTraining}"> 
    </h:commandButton> 

meiner Klasse

@ManagedBean 
@ViewScoped 
@SessionScoped 
public class MessageTableController implements Serializable { 

private static final long serialVersionUID = 20111020L; 

private UploadedFile file; 
private File f; 
private BufferedReader br; 
private String line; 
private String[] str;  
private String selected = "s"; 
private List<preList> menuList; 


public String getSelected() { 
    return selected; 
} 

public void setSelected(String selected) { 
    this.selected = selected; 
} 

public List<preList> getMenuList() { 
    return menuList; 
} 

public void setKullaniciList(List<preList> menuList) { 
    this.menuList = menuList; 
} 

public UploadedFile getFile() { 
    return file; 
} 

public void setFile(UploadedFile file) { 
    this.file = file; 
} 

public void upload() throws IOException { 
    if (file != null) { 
     FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, message); 
     readUploadedFile(); 
    } 
} 

public void readUploadedFile() throws IOException { 
    f = new File(file.getFileName()); 
    br = new BufferedReader(new FileReader(f)); 
    menuList = new ArrayList<preList>(); 
    while ((line = br.readLine()) != null) { 
     if (line.contains("PI")) { 
      str = line.split("="); 
      if(str[1].contains("DISABLE")){ 
       menuList.add(new preList(str[0], str[1], "ENABLE")); 
      } 
      else if(str[1].contains("ENABLE")){ 
       menuList.add(new preList(str[0], str[1], "DISABLE")); 
      } 
      else if(str[1].contains("YES")){ 
       menuList.add(new preList(str[0], str[1], "NO")); 
      } 
      else if(str[1].contains("NO")){ 
       menuList.add(new preList(str[0], str[1], "YES")); 
      } 
      else{ 
       menuList.add(new preList(str[0], str[1], "")); 
      } 
     } 
    } 
    br.close(); 
} 

public String submitTraining(){ 
    return "selectedOptions"; 
} 


public class preList { 

    private String value; 

    private String assign; 

    private String combo; 

    public preList(String value, String assign, String combo) { 
     this.assign = assign; 
     this.value = value; 
     this.combo = combo; 
    } 
    //set get methods... 

<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
xmlns:h="http://xmlns.jcp.org/jsf/html" 
xmlns:f="http://xmlns.jcp.org/jsf/core" 
xmlns:p="http://primefaces.org/ui"> 


<h:outputText value="#{messageTableController.selected}" /> 

</html> 

Output photo Wenn ich einreichen klicken leere Seite

+0

und der letzte Teil des Codes, was bedeutet es?!? –

+0

Wenn die Schaltfläche "Senden" geklickt wird, wird "selectedOptions.xhtml" ausgelöst, um ausgewählte Werte anzuzeigen, was der letzte Teil des Codes ist. –

+0

starten Sie es mit 'System.out.println (was ich sehen will);' vor dem Versuch, es erscheinen zu lassen (und ich denke, Sie wollen eine Includ verwenden) –

Antwort

1

Ihre ManagedBean haben, sollten nicht auf der gleichen Ansicht und Sitzungsbereich geöffnet Zeit, es ist entweder oder. Ich habe nicht versucht, was passiert, wenn Sie beide Annotationen hinzufügen, aber es sieht so aus, als ob es den Ansichtsbereich anwendet, da der ausgewählte Wert nicht mehr vorhanden ist, nachdem Sie zu Ihrer zweiten xhtml-Datei navigiert sind (es ist nicht dieselbe Ansicht -> neue Instanz von deine Bohne). Ich hoffe, ich könnte dir helfen :)

+0

Ich brauche es nicht mehr, ich versuche nur ausgewählte Werte zu erreichen :) Danke für Ihre Antwort. –