我使用jsf和Primefaces处理java Web应用程序,Glassfish 4.1.1作为我的应用程序服务器,PostgreSQL作为我的数据库。 我有一个包含selectOneMenu的表单,该值使用commandButton发送到ManagedBean。 然后,ManagedBean尝试使用DriverManager连接到数据库并执行查询,结果显示在panelGrid中。
这是ManagedBean Pays.java中的java代码:
public void save() throws NamingException, SQLException{
String url = "jdbc:postgresql://localhost:5432/zones_franches?user=postgres&password=jihane";
Connection conn = DriverManager.getConnection(url);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery ("SELECT * FROM pays WHERE id_geom = "+ idGeom +";");
System.out.println("Query executed....");
if(rs.next()) {
idPays = rs.getString("id_pays");
nom = rs.getString("nom");
superficie = rs.getString("superficie");
pib2014 = rs.getString("pib_2014");
population2014 = rs.getString("population_2014");
inflation = rs.getString("inflation");
investissements = rs.getString("investissements");
indDoingBus = rs.getInt("ind_doing_business");
rs.close();
st.close();
conn.close();
}else{
System.out.print("try again !");
rs.close();
st.close();
conn.close();
}
}
这是xhtml页面代码:
<h:form>
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="pays" value="Pays sélectionné : " />
<h:selectOneMenu id="pays" value="#{pays.idGeom}" required="true" label="ID Pays">
<f:selectItem itemLabel="Egypte" itemValue="1" />
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid>
<p:commandButton process="@parent:@parent" update="@form" value="Détails" action="#{pays.save()}"/>
<br/>
<p:panelGrid columns="2">
<f:facet name="header">
<p:graphicImage name="demo/images/misc/kobe.png" />
</f:facet>
<h:outputText value="Code Pays :" />
<h:outputText value="#{pays.idGeom}" />
<h:outputText value="Id Pays :" />
<h:outputText value="#{pays.idPays}" />
<h:outputText value="Nom Pays :" />
<h:outputText value="#{pays.nom}" />
</p:panelGrid>
</h:panelGrid>
</h:form>
问题是,即使我单击commandButton时执行了save()方法,结果也不会显示在panelGrid中。