【问题标题】:input record always null输入记录始终为空
【发布时间】:2014-08-20 09:21:59
【问题描述】:

我有问题。 我为学生制作了一个注册表单。 当我按下确认按钮并调试时,为什么输入的变量总是为空。

文件 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;
    }
}

谁能解决我的问题? 因为我不知道为什么输入记录总是为空,在此之前我成功地做了一个这样的项目。 谢谢大家,对不起我的英语不好

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    您根本不process 表单,只有按钮。改成

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

    编辑

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

    【讨论】:

    • 很抱歉,我还是不明白你的意思。我必须做什么 ?还是改不了
    • 只需检查您的simpan 方法并问自己,当您在此方法中做的第一件事是创建一个新的databaseMahasiswa 对象时,值应该是!= null
    • 最后我解决了这个问题..我必须使用databaseMahasiswa hehehe所以如果我使用simpan方法我应该将变量带到方法插入非常感谢兄弟..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2020-11-27
    • 2011-11-10
    • 2019-10-11
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多