0
私はウェブプログラミングには新しく、適切な接続を行い、ドロップダウンにデータが入力されるようにします。 Eclipse、最新のJDK、Wildfly 10サーバー、MySQLサーバー5.7、Primefaces 5.3、Javax.faces 2.2を使用しています。プライムサーフェスselectonemenuは入力外のデータを表示します
これはページです:
<?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>
そして、これは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();
}
...
データが外部に複製されているのを見てもわかるように、存在しないinputTextが表示され、スタイルはPrimefaceのように見えます。何が起こっているのか分かりません。
これは行為の問題でもありました。私はそれを に変更しなければなりませんでした。 –
Newbee