2016-04-24 6 views
0

Ich bin neu in der Webprogrammierung und ich schaffe es, die Arbeit die richtigen Verbindungen zu machen, so dass die Dropdown-Liste füllt; Ich benutze Eclipse, das neueste JDK, Wildfly 10 Server, MySQL Server 5.7, Primefaces 5.3, Javax.faces 2.2.Primegafts selectonemenu Anzeige von Daten außerhalb der Eingabe

Dies ist die Seite:

<?xml version='1.0' encoding='UTF-8'?> 
 
<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml" 
 
     xmlns:h="http://java.sun.com/jsf/html"  
 
     xmlns:f="http://java.sun.com/jsf/core" 
 
     xmlns:p="http://primefaces.org/ui" 
 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
 
     xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" 
 
     > 
 

 
<head> 
 
\t <title>combobox</title> 
 
</head> 
 
<body> 
 

 

 
\t <h:form id="form1"> 
 
\t \t <p:panel header="Ingreso" style="width: 600px;"> 
 
\t \t \t <h:panelGrid columns="2"> 
 
\t \t \t \t <h:outputText value="Provincia: " /> 
 
\t \t \t \t <p:selectOneMenu value="#{Usuario.provincia}" id="prov" 
 
           valueChangeListener="#{Usuario.processCant()}" > 
 
\t \t \t \t \t <f:selectItem itemLabel="Seleccione" itemValue="" /> 
 
\t \t \t \t \t <f:selectItems value="#{Usuario.provincias}" /> \t 
 
\t \t \t \t \t <p:ajax update="cant" event="change" /> \t \t \t \t 
 
\t \t \t \t </p:selectOneMenu> 
 
\t \t \t \t 
 
\t \t \t \t <h:outputText value="Cantón: " /> 
 
       <p:selectOneMenu value="#{Usuario.canton}" id="cant" valueChangeListener="#{Usuario.processParr()}"> 
 
         <f:selectItem itemLabel="Seleccione" itemValue="" /> 
 
         <f:selectItems value="#{Usuario.cantones}"/> 
 
         <p:ajax update="parr" event="change" /> \t 
 
       </p:selectOneMenu> 
 
       
 
       <h:outputText value="Parroquia: " /> 
 
       <p:selectOneMenu value="#{Usuario.parroquia}" id="parr"> 
 
         <f:selectItem itemLabel="Seleccione" itemValue="" /> 
 
         <f:selectItems value="#{Usuario.parroquias}"/> 
 
       </p:selectOneMenu> 
 
        
 
\t \t \t </h:panelGrid> 
 
\t \t \t 
 
\t \t </p:panel> 
 
\t </h:form> 
 
</body> 
 
</html>

Und das ist das java:

@ManagedBean(name="Usuario") 
@SessionScoped 
public class Usuario implements Serializable { 
    private static final long serialVersionUID = 1L; 
    private int ID; 
    private String nombre; 
    private String apellido; 

    private String fecha; 
    private String lugar; 
    private String numero; 
    private String Provincia; 
    private List<SelectItem> Provincias; 
    private String Canton; 
    private List<SelectItem> Cantones; 
    private String Parroquia; 
    private List<SelectItem> Parroquias; 

    public List<SelectItem> getProvincias() { 
     List<SelectItem> catProvincias = new ArrayList<SelectItem>(); 
     try { 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/schema", "root", "root"); 
      Statement st = con.createStatement(); 
      ResultSet rs = null; 
      String myQuery = "SELECT Provincia FROM `schema`.provincia;"; 
      rs = st.executeQuery(myQuery); 
      while (rs.next()) { 
       catProvincias.add(new SelectItem(rs.getString("Provincia"))); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     return catProvincias; 
    } 
    public List<SelectItem> getCantones() { 
     List<SelectItem> catCantones = new ArrayList<SelectItem>(); 
     try { 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/schema", "root", "root"); 
      Statement st = con.createStatement(); 
      ResultSet rs = null; 
      String myQuery = "SELECT Canton FROM `schema`.Canton WHERE Padre=(select Provincia from `schema`.Provincia where Provincia='"+ Provincia + "')"; 

      rs = st.executeQuery(myQuery); 
      while (rs.next()) { 
       catCantones.add(new SelectItem(rs.getString("Canton"))); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     return catCantones; 
    } 
    public List<SelectItem> getParroquias() { 
     List<SelectItem> catParroquias = new ArrayList<SelectItem>(); 
     try { 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/schema", "root", "root"); 
      Statement st = con.createStatement(); 
      ResultSet rs = null; 
      String myQuery = "SELECT Parroquia FROM `schema`.parroquia WHERE Padre=(select Canton from `schema`.Canton where Canton='"+ Canton +"')"; 
      rs = st.executeQuery(myQuery); 
      while (rs.next()) { 
       catParroquias.add(new SelectItem(rs.getString("Parroquia"))); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     return catParroquias; 
    } 
    public void processCant() { 
     getCantones(); 
    } 
    public void processParr() { 
     getParroquias(); 
    } 

...

Und das ist das Ergebnis: result

Wie Sie sehen können, werden die Daten nach außen dupliziert angezeigt, es ist ein nicht existierender inputText gezeigt und der Stil sieht überhaupt wie Primefaces aus, ich habe keine Ahnung, was passiert, bitte um Rat.

Antwort

1

Sie müssen die <head></head> Tags durch die jsf spezifischen <h:head></h:head> Tags ersetzen, damit PrimeFaces alle notwendigen js und css Dateien importiert.

+0

das war das Problem in der Tat, auch ich musste es zu ändern – Newbee