【问题标题】:why the text-field always return null?为什么文本字段总是返回 null?
【发布时间】:2012-05-07 22:11:47
【问题描述】:

下面的 sn -p 向数据库提交一个标题。填写文本后,我单击提交,但令我惊讶的是,总是有一个 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 中返回的文本字段的值,甚至打印的 null。为什么文本字段返回 null ?

【问题讨论】:

  • 我也无法在该文本字段中的单词之间留出空格!
  • 如果input 小部件不使用包含空格的名称会怎样?
  • 你真的需要 multipart/form-data 吗?
  • @GregKopff 我不明白你

标签: java html database servlets


【解决方案1】:

我不知道为什么会发生这种情况,但发生在我身上一两次.. i 你的 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。

【讨论】:

  • 阅读问题。在我将它发送到帮助类之前,我告诉过 vaule 为空
  • 由于Enctype..我仍然需要找到原因,但我制作了一个示例代码..您从表单标签中重新获取编码类型并且它可以工作..我复制粘贴您的代码并制作一个示例程序
  • 是的,现在可以了!但我必须使用多部分编码。有出路吗?
  • stackoverflow.com/questions/2422468/…请参考文章。要使用此编码获取值,您需要添加 commons-fileupload.jar。这个问题有一个很好的答案..请看
  • 如果可能的话,请+答案..!!
【解决方案2】:

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

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

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

【讨论】:

  • 我不认为这是个问题,请您详细说明一下吗?
  • 什么!你为什么这么认为?
  • 这也是W3C recommendation: "ID 和NAME 标记必须以字母开头([A-Za-z]),后面可以跟任意数量的字母、数字([0-9] )、连字符 ("-")、下划线 ("_")、冒号 (":") 和句点 (".")。"
  • @grassPro 按照我之前的评论,恐怕你刚刚在你的html中将请求变量名从caption box更改为captionbox,但在你的servlet中没有。如果您的请求变量不应该有 和 ,我看不出有什么理由会得到 null 。
  • 我也无法在该文本字段中使用空格键。我正在研究某人的其他设计,他使用了很多 JQUERY 和 JAVASCRIPT。当我点击空间时,而不是页面上的照片移动得更远!
猜你喜欢
  • 2014-09-12
  • 2019-09-18
  • 2014-09-02
  • 2015-02-27
  • 2021-01-10
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多