2011-07-06 9 views
0

私は質問をどのようにフレーズするのか分かりません。私はデータを処理してデータベースに提出するJavaバックエンドにデータを提出するHTMLフォームを持っています。私はどうなるのJavaページでjava/htmlフォーム送信 - > request.getParameter( "...");文字列の最初の部分だけを返しますか?

<input type="text" name="firstName"> 

String firstName = request.getParameter("firstName"); 

Javaフォームはそれほどの価値をつかむためにjavax.servlet.http.HttpServletRequestライブラリ

を使用して、私の値のそれぞれをつかみます

これは素晴らしいですが、私の入力が2単語の場合、最初のものだけが返されます。

だから、私のfirstNameには "John George"を入れてください。 Javaページは "John"しか受け取りません。

私は理由を理解できません。

フォームコード:

foot = "<form method='POST' action='Submit'>"; 
    //path to java servlet 
    foot += "<input type='hidden' name='firstName' value="+firstName+">"; 
    foot += "<input type='hidden' name='lastName' value="+lastName+">"; 
    foot += "<input type='hidden' name='school' value="+school+">"; 
    foot += "<input type='hidden' name='email' value="+email+">"; 
+0

はあなたのフォームGETまたはPOSTですか? – RMT

+0

どちらかで動作しません。 今私はPOSTを使用していますtho –

+0

私は知らない、私の最後に動作します。私のサーブレットのdoPost(リクエスト、レスポンス)のパラメータを取得するポストを持つ単純なフォーム。 – RMT

答えて

0

各属性値は引用符で囲む必要があります。あなたの属性は引用符で囲まれています(ほとんどのブラウザで扱うことができます)が、値属性には引用符はありません。だからあなたの出力はこのような何かを探しています:

<input type='hidden' name='firstName' value=John George> 

値は引用符で囲まれていないので、したがってブラウザはせずに、新しい属性であることをvalue属性の値と「ジョージ」と「ジョン」を解釈しています価値。

値属性を引用符で囲んでこれを修正する必要があります。

foot = "<form method=\"POST\" action=\"Submit">"; 
//path to java servlet 
foot += "<input type=\"hidden\" name=\"firstName\" value=\""+firstName+"\">"; 
foot += "<input type=\"hidden\" name=\"lastName\" value=\""+lastName+"\">"; 
foot += "<input type=\"hidden\" name=\"school\" value=\""+school+"\">"; 
foot += "<input type=\"hidden\" name=\"email\" value=\""+email+"\">"; 
+0

ありがとう! そのトリックをした! –

0

理由は非常に単純です:ブラウザでHTMLソースコードを見て、あなたが表示されます:

<input type='hidden' name='firstName' value=John George> 

ですから、4でinput要素を持っています最後の属性はGeorgeです。

ソリューション:

  1. あなたの文字列を引用することを忘れないでくださいは、第二の点は、いたずら好きの人々することができますあなたがHTMLに

を追加するHTMLのエスケープテキスト値を決して忘れませんあなたのウェブサイトで非常に不快なことをする。 Cross-site scriptingを参照してください。

だから、正しいコードは次のようになります。

foot += "<input type='hidden' name='firstName' value='"+StringEscapeUtils.escapeHtml(firstName)+"'>"; 

StringEscapeUtilscommons-langで見つけることができます。

0

firstName = "John George"このことを考える:"<input type='hidden' name='firstName' value="+firstName+">";だから

<input type='hidden' name='firstName' value=John George> 

にHTMLにレンダリングする "ジョージは" 属性として解釈されます。引用符を正しく追加してください:

"<input type='hidden' name='firstName' value='" + firstName + "'>" 
関連する問題