输入记录始终为null

时间:2014-08-20 09:22:00

标签: jsf primefaces

我有一个问题。 我为学生做了一个报名表。 当我按下确认按钮并进行调试时,为什么变量输入始终为空。

文件xhtml

<h:body>
     <p:layout fullPage="true">
        <p:layoutUnit size="70" position="north"/>
        <p:layoutUnit size="300" position="west"/>
        <p:layoutUnit position="center">
           <h:form id="MahasiswaCreateForm">
                <p:panelGrid id="panelList" columns="2" > 
                    <f:facet name="header">
                        Registrasi Mahasiswa Baru
                    </f:facet>
                    <p:outputLabel for="nim" value="NIM"/>
                    <p:inputText id="nim" value="#{databaseMahasiswa.nim}" title="nim" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="nama_lengkap" value="Nama Lengkap"/>
                    <p:inputText id="nama_lengkap" value="#{databaseMahasiswa.nama}" title="nama" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="tempatLahir" value="Tempat Lahir"/>
                    <p:inputText id="tempatLahir" value="#{databaseMahasiswa.tempat_lahir}" title="tempat_lahir" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="mask" value="Tanggal Lahir" />
                    <p:calendar id="mask" value="#{databaseMahasiswa.tanggal_lahir}" title="tanggal_lahir" pattern="dd-MM-yyyy" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="fakultas"  value="Fakultas"/>
                    <p:inputText id="fakultas" value="#{databaseMahasiswa.fakultas}" title="fakultas" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="jurusan" value="Jurusan"/>
                    <p:inputText id="jurusan" value="#{databaseMahasiswa.jurusan}" title="jurusan" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="telepon" value="Telepon"/>
                    <p:inputMask id="telepon" mask="(9999) 9999-9999" value="#{databaseMahasiswa.telepon}" title="telepon" required="true" requiredMessage="Please fill the blank field"/>
                    <p:outputLabel for="alamat" value="Alamat"/>
                    <p:inputTextarea id="alamat" value="#{databaseMahasiswa.alamat}" title="alamat" required="true" requiredMessage="Please fill the blank field"/>
                    <f:facet name="footer">
                        <p:commandButton actionListener="#{controllerMahasiswa.simpan}" process="@this" partialSubmit="true" ajax="true" value="Confirm"  update="panelList"/>
                        <p:spacer/>
                        <p:commandButton type="reset" value="Clear" />
                    </f:facet>
                </p:panelGrid>
            </h:form> 
        </p:layoutUnit>
    </p:layout>
</h:body>

这是我称之为数据库学生和控制器

@ManagedBean
public class databaseMahasiswa {

    public int getNim() {
        return nim;
    }

    public void setNim(int nim) {
        this.nim = nim;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getTempat_lahir() {
        return tempat_lahir;
    }

    public void setTempat_lahir(String tempat_lahir) {
        this.tempat_lahir = tempat_lahir;
    }

    public Date getTanggal_lahir() {
        return tanggal_lahir;
    }

    public void setTanggal_lahir(Date tanggal_lahir) {
        this.tanggal_lahir = tanggal_lahir;
    }

    public String getFakultas() {
        return fakultas;
    }

    public void setFakultas(String fakultas) {
        this.fakultas = fakultas;
    }

    public String getJurusan() {
        return jurusan;
    }

    public void setJurusan(String jurusan) {
        this.jurusan = jurusan;
    }

    public String getTelepon() {
        return telepon;
    }

    public void setTelepon(String telepon) {
        this.telepon = telepon;
    }

    public String getAlamat() {
        return alamat;
    }

    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }

    private int nim;

    private String nama;

    private String tempat_lahir;

    private Date tanggal_lahir;

    private String fakultas;

    private String jurusan;

    private String telepon;

    private String alamat;

    public void insert() {
        try {

            Connection dbConnect = null;
            Statement exe = null;

            String cSql = "insert into \"public\".mahasiswa (nim,nama,tempat_lahir,tanggal_lahir,fakultas,jurusan,telepon,alamat)"
                    + " values ('" + nim + "', '" + nama + "','" + tempat_lahir + "', '" + tanggal_lahir + "', '" + fakultas + "', '" + jurusan + "', '" + telepon + "', '" + alamat + "')";

            dbConnect = koneksi.konek();
            exe = dbConnect.createStatement();
            exe.executeUpdate(cSql);
            exe.close();
            dbConnect.close();
        } catch (SQLException ex) {
            Logger.getLogger(controllerMahasiswa.class.getName()).log(Level.SEVERE, null, ex);
        }
    }  
}

这是控制器

public class controllerMahasiswa {
    public static void main(String[] argv) throws ClassNotFoundException {

    }

    public void simpan() {
        databaseMahasiswa dbMhs = new databaseMahasiswa();
        dbMhs.insert();
    }
}

这是连接类

public class koneksi {

    public static Connection konek() {
        Connection connection = null;
        try {
            Class.forName("org.postgresql.Driver");
        } 
        catch (ClassNotFoundException ex) {
            Logger.getLogger(controllerMahasiswa.class.getName()).log(Level.SEVERE, null, ex);
        }   
        try {
            connection = DriverManager.getConnection(
            "jdbc:postgresql://127.0.0.1:5432/test", "postgres","fauzan");
        } 
        catch (SQLException ex) {
            Logger.getLogger(controllerMahasiswa.class.getName()).log(Level.SEVERE, null, ex);
        }
        return connection;
    }
}

任何人都可以解决我的问题吗? 因为我不知道为什么输入记录总是为空,在此之前我成功制作了这样的项目。 谢谢大家,对不起我的坏英语

1 个答案:

答案 0 :(得分:0)

您根本不是process表单,只是按钮。将其更改为

<p:commandButton actionListener="#{controllerMahasiswa.simpan}" process="@form" partialSubmit="true" ajax="true" value="Confirm"  update="panelList"/>

修改

此外,您在调用simpan时创建了一个新的托管bean,因此您应该通过将命令按钮委派给托管bean的方法来重用使用UI填充的对象。