2012-04-27 9 views
0

次のスニペットは、キャプションをデータベースに送信します。テキストを入力した後、私は驚いたことにいつもヌルテーブルに行く提出をクリックします。なぜテキストフィールドは常にnullを返しますか?

<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> 

サーブレット

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

Iの値を印刷しようとしたクラス

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(); 
    } 
} 

}

:私は、サーブレット・コードと以下のHTMLデザインをmetionedましたサーブレットで返されるテキストフィールドは、印刷されたnullでも返されます。テキストフィールドがnullを返す理由

+0

また、私はそのテキストフィールド内の単語の間にスペースを与えることができません! – saplingPro

+2

'input'ウィジェットがスペースを含む名前を使用しない場合、結果はどうなりますか? –

+0

本当にmultipart/form-dataが必要ですか? –

答えて

3

.. 私はあなたのキャプションクラスハンドルキャプション、私はそれがにダムの答えのように見える知っ

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

としてそれを宣言するあなたは実際に渡された値を参照しているコンストラクタのような質問ですが、私はこれを経験していますme.pleaseのための解決策を試して返信してください!更新

:エンコードの種類を誤って そのため、質問をadressingため申し訳ありませんが、そのが起こっ理由について読ん..しかし、単にエンコードの種類を削除し、それがサンプルコード

Updateでworks..triedます: multipart/form-dataでエンコードされたリクエストは、実際にはバージョン3.0より前のサーブレットAPIによってデフォルトでサポートされていません。サーブレットAPIは、デフォルトでapplication/x-www-form-urlencodedエンコーディングを使用してパラメータを解析します。別のエンコーディングを使用する場合、request.getParameter()呼び出しはすべてnullを返します。

+0

質問をお読みください。私はヘルパークラス – saplingPro

+0

Enctypeのためにそれを送信する前にvauleがnullであると言った..私はまだ理由を見つける必要がありますが、私はサンプルコードを作った..あなたはフォームタグからエンコーディングタイプをrepoveし、それは動作します..あなたのコードをコピーしてサンプルプログラムを作成しました –

+0

@grassProアップデートを見てください!! –

1

フィールドのcaptionboxにはスペースを含めないでください。

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

また、サーブレット側からスペースを削除します。この問題が発生したが、一度か二度私に起こった理由を私はよく分からない

+0

私はそれが問題だと思う、u pls elobarateですか? –

+0

WHAT!なぜそれを考えるのですか? – saplingPro

+3

それはまた、[W3C勧告](http://www.w3.org/TR/html4/types.html#type-cdata)です: "ID"と "NAME"トークンは、 (0〜9)、ハイフン( ''〜 '')、アンダースコア( '' _ '')、コロン( ''〜 ":")、ピリオド( '"。 – Maehler

関連する問題