Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JDBCSpring4Java将文本框输入转换为数字和日期的正确方法_Java_Sql_Spring_Oracle_Jdbc - Fatal编程技术网

JDBCSpring4Java将文本框输入转换为数字和日期的正确方法

JDBCSpring4Java将文本框输入转换为数字和日期的正确方法,java,sql,spring,oracle,jdbc,Java,Sql,Spring,Oracle,Jdbc,我在尝试更新JSP web表单上的记录时遇到一个400错误,其中输入来自文本框。我读到这可能是由于整数的字符串到整数的问题,或者日期的字符串到日期的问题 我的桌子是这样的: // Name Null? Type // ----------------------------------------- -------- ---------------------------- // JOB_NUMBE

我在尝试更新JSP web表单上的记录时遇到一个400错误,其中输入来自文本框。我读到这可能是由于整数的字符串到整数的问题,或者日期的字符串到日期的问题

我的桌子是这样的:

//    Name                                      Null?    Type
//    ----------------------------------------- -------- ----------------------------
//    JOB_NUMBER                                NOT NULL NUMBER(10)
//    JOB_NAME                                  NOT NULL VARCHAR2(200)
//    DROP_CODE                                          VARCHAR2(10)
//    QUANTITY                                           NUMBER(10)
//    MBI_NUMBER                                         VARCHAR2(20)
//    PICKUP_DATE                                        DATE
//    DROP_DATE                                          DATE
//    INHOME_DATE                                        DATE
JSP输入示例:

<td><form:input path="jobNumber" class="form-control input-sm" value="${row.jobNumber}" cssStyle="width: 99%"/></td>
摘自记录类:

 public int getJobNumber() {
        return jobNumber;
    }

    public void setJobNumber(int jobNumber) {
        this.jobNumber = jobNumber;
    }

 public Date getInhomeDate(){
        return inhomeDate;
    }

    public void setInhomeDate(Date inhomeDate) {
        this

 private int jobNumber;
 private Date inhomeDate;
服务类别的相关代码:

 // C.R."U".D.
    public void updateRecord(@ModelAttribute("record") WorkPage1Record record) {
        PreparedStatement stmt = null;
        try {
            stmt = connection.prepareStatement(
                    //    Name                                      Null?    Type
                    //    ----------------------------------------- -------- ----------------------------
                    //    JOB_NUMBER                                NOT NULL NUMBER(10)
                    //    JOB_NAME                                  NOT NULL VARCHAR2(200)
                    //    DROP_CODE                                          VARCHAR2(10)
                    //    QUANTITY                                           NUMBER(10)
                    //    MBI_NUMBER                                         VARCHAR2(20)
                    //    PICKUP_DATE                                        DATE
                    //    DROP_DATE                                          DATE
                    //    INHOME_DATE                                        DATE
                    "UPDATE sys.jobs SET "
                            + "JOB_NAME = ?, "
                            + "DROP_CODE = ?, "
                            + "QUANTITY = ?, "
                            + "MBI_NUMBER = ?, "
                            + "PICKUP_DATE = ?, "
                            + "DROP_DATE = ?, "
                            + "INHOME_DATE = ?, "
                            + "WHERE JOB_NUMBER = ?");
        } catch (SQLException e) {
            LOGGER.error("### Could not prepare single insert statement in jobs table", e);
        }
        try {
            // duplicate of what is in the createRecord method
            stmt.setInt(1, record.getJobNumber());
            stmt.setString(2, record.getJobName());
            stmt.setString(3, record.getDropCode());
            stmt.setInt(4, record.getQuantity());
            stmt.setString(5, record.getMbiNumber());
            stmt.setDate(6, record.getPickupDate());
            stmt.setDate(7, record.getDropDate());
            stmt.setDate(8, record.getInhomeDate());
            stmt.executeUpdate();
            commit();
        } catch (Exception e) {
            LOGGER.error("### Could not update jobs table record", e);
        }
        try {
            stmt.close();
        } catch (SQLException e) {
            LOGGER.error("### Could not close jobs table update statement", e);
        }
    }

这段代码的最小更改是什么,它允许我正确地处理JSP表单的输入,以便正确地将其转换为记录类指定的任何类型?之前,我一直在作弊,只是将表VARCHAR2中的所有字段都转换为字符串,以避免将整个字符串转换为神秘的、文档记录不良的“日期”转换

我不是SpringMVC方面的专家,但我认为您必须将表单与模型对象链接,在您的情况下,它将是“updateRecord”。首先创建或检索该对象,然后在JSP中显示它。提交表单时,引入的数据将使用转换器绑定到该对象。我认为Spring有一些默认的转换器,也许你必须配置它们。然后你可以将这个对象保存在数据库中。也许如果你把堆栈跟踪放在404(我想不是400)代码中,人们可以帮助你。我读过关于SpringMVC的书,这些转换应该是自动进行的。这不是404错误。这是一个错误。你能举一个例子说明你在说什么吗?400意味着糟糕的要求。我认为这与转换类型无关。404通常在由于异常而无法生成响应时出现。下面是一个包含日期的表单示例,它可能会帮助您我不是spring mvc的专家,但我认为您必须将表单与模型对象链接,在您的情况下,它将是“updateRecord”。首先创建或检索该对象,然后在JSP中显示它。提交表单时,引入的数据将使用转换器绑定到该对象。我认为Spring有一些默认的转换器,也许你必须配置它们。然后你可以将这个对象保存在数据库中。也许如果你把堆栈跟踪放在404(我想不是400)代码中,人们可以帮助你。我读过关于SpringMVC的书,这些转换应该是自动进行的。这不是404错误。这是一个错误。你能举一个例子说明你在说什么吗?400意味着糟糕的要求。我认为这与转换类型无关。404通常在由于异常而无法生成响应时出现。下面是一个包含日期的表单示例,它可能会对您有所帮助
 // C.R."U".D.
    public void updateRecord(@ModelAttribute("record") WorkPage1Record record) {
        PreparedStatement stmt = null;
        try {
            stmt = connection.prepareStatement(
                    //    Name                                      Null?    Type
                    //    ----------------------------------------- -------- ----------------------------
                    //    JOB_NUMBER                                NOT NULL NUMBER(10)
                    //    JOB_NAME                                  NOT NULL VARCHAR2(200)
                    //    DROP_CODE                                          VARCHAR2(10)
                    //    QUANTITY                                           NUMBER(10)
                    //    MBI_NUMBER                                         VARCHAR2(20)
                    //    PICKUP_DATE                                        DATE
                    //    DROP_DATE                                          DATE
                    //    INHOME_DATE                                        DATE
                    "UPDATE sys.jobs SET "
                            + "JOB_NAME = ?, "
                            + "DROP_CODE = ?, "
                            + "QUANTITY = ?, "
                            + "MBI_NUMBER = ?, "
                            + "PICKUP_DATE = ?, "
                            + "DROP_DATE = ?, "
                            + "INHOME_DATE = ?, "
                            + "WHERE JOB_NUMBER = ?");
        } catch (SQLException e) {
            LOGGER.error("### Could not prepare single insert statement in jobs table", e);
        }
        try {
            // duplicate of what is in the createRecord method
            stmt.setInt(1, record.getJobNumber());
            stmt.setString(2, record.getJobName());
            stmt.setString(3, record.getDropCode());
            stmt.setInt(4, record.getQuantity());
            stmt.setString(5, record.getMbiNumber());
            stmt.setDate(6, record.getPickupDate());
            stmt.setDate(7, record.getDropDate());
            stmt.setDate(8, record.getInhomeDate());
            stmt.executeUpdate();
            commit();
        } catch (Exception e) {
            LOGGER.error("### Could not update jobs table record", e);
        }
        try {
            stmt.close();
        } catch (SQLException e) {
            LOGGER.error("### Could not close jobs table update statement", e);
        }
    }