为什么text-field总是返回null?

时间:2012-04-27 06:40:08

标签: java html database servlets

以下代码段向数据库提交标题。在填写完文本后,我点击提交,但令我惊讶的是, null 总是会转到表格。我已经提到了servlet代码和下面的html设计:

<form method="post" action="Handler" enctype="multipart/form-data">
        <table>
            <tr>
                <td> <strong> Leave a caption </strong>  </td>
                <td> <input type="text" name="caption box" size="40" /></td>
            </tr>

            <tr colspan="2">
                <td> <input type="submit" value="submit caption"/> </td>
            </tr>
        </table>
    </form>

的Servlet

String caption = request.getParameter("caption box"); // get the caption from the caption field
HandleCaption hc = new HandleCaption(caption,emailOfTheUser,fileName);
hc.SubmitCaptionToTheDatabase(); 

public class HandleCaption {
private String Caption = null;
private String UserEmail = null;
private String NameOfThe = null;

public HandleCaption(String caption,String email,String filename) {
    Caption = caption;
    UserEmail = email;
    NameOfThe = filename;
}

public void SubmitCaptionToTheDatabase() {
    try {
        Context context = new InitialContext();
        DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/DS");
        Connection connection = ds.getConnection();
        String sqlQuery = "insert into CAPTIONS values ('" + UserEmail + "','" + NameOfThe + "','" + Caption + "')";
        PreparedStatement statement = connection.prepareStatement(sqlQuery);
        int x = statement.executeUpdate();
    }catch(Exception exc) {
        exc.printStackTrace();
    }
}

}

我尝试打印servlet中返回的text-field的值,甚至是打印的null。为什么text-field返回null?

2 个答案:

答案 0 :(得分:3)

我不知道为什么会发生这种情况,但发生过一次或两次...... 我的Caption类Handle Caption,声明为

private String Caption = "";
private String UserEmail = "";
private String NameOfThe = "";

我知道它看起来像一个愚蠢的问题答案,因为在构造函数中你实际上指的是传递的值,但我已经体验过这个,这就是我的解决方案。请尝试回复!!

更新:抱歉错误地解决了这个问题 它由于编码类型,将读取为什么它发生..但只是删除编码类型,它的工作..示例代码

更新:版本3.0之前的Servlet API默认不支持multipart / form-data编码的请求。 Servlet API默认使用application / x-www-form-urlencoded编码解析参数。使用不同的编码时,request.getParameter()调用都将返回null。

答案 1 :(得分:1)

您的姓名captionbox字段不应包含空格。

<input type="text" name="captionbox" size="40" />

从中删除空格,也从servlet端删除空格。