primefaces+jdbc实现单表操作

  primefaces绘制界面很方便,因此想做个简单的测试,实现一个jsf页面,一个managedBean,对单表进行增删改查操作。初步想法绘制一个jsf页面,里面包含一个dataTable控件,上面有个添加按钮,每行有修改和删除按钮,点击按钮后弹出dialog窗口,操作数据并提交。managedBean中实现增删改查的具体方法。

  但发现dialog窗口中的textInput控件的数据绑定失败,查找文档后发现需要将dialog声明移到form之外,并在dialog中在加一个form。但会引起update=“XXX”的引用失效,这时可使用jquery的引用方式(update="@([id$=cityList])" )。

创建一个简单的表:Create Table(F1 int, F2 nvarchar(100));

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:p="http://primefaces.org/ui"
        template="/WEB-INF/template.xhtml">
        
<ui:define name="content">
  <h:form id="cityForm" prependId="true">
  <p:panel id="cityList" header="城市信息维护" style="margin-bottom:20px">
    <p:commandButton value="添加" type="button" οnclick="cdAdd.show()"/>
<p:dataTable var="test" value="#{testView.tests}" rows="10" paginator="true">
<f:facet name="header">
       城市信息列表
   </f:facet>
   <p:column headerText="编号" sortBy="#{test.f1}">
       <h:outputText value="#{test.f1}" />
   </p:column>
   <p:column headerText="名称" sortBy="#{test.f2}">
       <h:outputText value="#{test.f2}" />
   </p:column>
   <p:column headerTest="操作">
     <p:commandLink oncomplete="cd.show()" title="View Detail" update="@([id$=cityPanel])"> 
       <p:graphicImage value="/image/edit.png"/>
       <p:ajax event="click" update="cityPanel" /> 
       <f:setPropertyActionListener value="#{test}" target="#{testView.selectedTest}" /> 
     </p:commandLink>
     <p:commandLink oncomplete="cdDelete.show()" title="删除" update="@([id$=cityPanel])"> 
       <p:graphicImage value="/image/delete.png"/>
       <p:ajax event="click" update="cityPanel" /> 
       <f:setPropertyActionListener value="#{test}" target="#{testView.selectedTest}" /> 
     </p:commandLink>
   </p:column>
</p:dataTable>
  </p:panel>
  </h:form>
  <p:dialog message="添加城市信息" header="城市信息" severity="alert"  widgetVar="cdAdd" appendToBody="true" modal="true">
          <h:form>
     <p:panelGrid columns="2" style="margin-bottom:10px">
      <h:outputLabel for="cityName1" value="Firstname:" />
<h:inputText id="cityName1" value="#{testView.cityName}" />
   <p:commandButton value="添加" actionListener="#{testView.addCity}" update="@([id$=cityList])" oncomplete="cdAdd.hide()"/> 
   <p:commandButton value="取消" οnclick="cdAdd.hide();" type="button" />      
     </p:panelGrid>
 </h:form>
 </p:dialog>
 <p:dialog message="修改城市信息" header="城市信息" severity="alert"  widgetVar="cd" appendToBody="true" modal="true">
         <h:form>
     <p:panelGrid  id="cityPanel" columns="2" style="margin-bottom:10px">
      <h:outputLabel for="citytname" value="Firstname:" />
<h:inputText id="citytname" value="#{testView.selectedTest.f2}" />
   <p:commandButton value="修改" actionListener="#{testView.modifyCity}" update="@([id$=cityList])" oncomplete="cd.hide()"/> 
   <p:commandButton value="取消" οnclick="cd.hide();" type="button" />      
     </p:panelGrid>
     </h:form>
 </p:dialog>
  <p:dialog message="修改城市信息" header="城市信息" severity="alert"  widgetVar="cdDelete" appendToBody="true" modal="true">
         <h:form>
     <p:panelGrid  id="cityPanel" columns="2" style="margin-bottom:10px">
   <p:commandButton value="删除" actionListener="#{testView.deleteCity}" update="@([id$=cityList])" oncomplete="cdDelete.hide()"/> 
   <p:commandButton value="取消" οnclick="cdDelete.hide();" type="button" />      
     </p:panelGrid>
     </h:form>
 </p:dialog>
 
</ui:define>
</ui:composition>

package com.henreash.view;


import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;


import com.henreash.model.Test;
import com.henreash.service.TestService;


@ManagedBean
@ViewScoped
public class TestView implements Serializable{
/**

*/
private static final long serialVersionUID = -1565242107915954858L;
private List<Test> tests;
private String cityName;
private Test selectedTest;


public List<Test> getTests() {
return tests;
}


public void setTests(List<Test> tests) {
this.tests = tests;
}

public TestView() {
init();
}

@SuppressWarnings("unchecked")
//@PostConstruct
    public void init() {
loadData();
    }

private void loadData() {
TestService ts = new TestService();
try {
tests = ts.findAll();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void addCity() {
System.out.println("===============addCity    " + cityName);
TestService ts = new TestService();
ts.addTest(cityName);
loadData();
}

public void modifyCity() {
System.out.println("===============modifyCity");
TestService ts = new TestService();
ts.modify(selectedTest);
loadData();
}

public void deleteCity() {
TestService ts = new TestService();
ts.delete(selectedTest);
loadData();
}


public String getCityName() {
return cityName;
}


public void setCityName(String cityName) {
this.cityName = cityName;
}


public Test getSelectedTest() {
if (selectedTest != null)
System.out.println(">>>>>>getSelectedTest   " + selectedTest.getF2());
return selectedTest;
}


public void setSelectedTest(Test selectedTest) {
System.out.println(">>>>>>setSelectedTest   " + selectedTest.getF2());
this.selectedTest = selectedTest;
}


}


效果:


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值