開発中のWebアプリで解決できないバグがあります。初歩的なことなのかもしれませんが、Webで調べても解決に至らず。。アドバイスをお願いします。
【内容】
長い文章を新規登録フォーム中の「登録内容」に記述し、登録ボタンを押しても反応しない。
一度短い文章にして登録後、編集フォームで長い文章を入力し、更新すれば登録できる。
→1984バイトまで登録可能。1984バイトを超えるとsubmitできない。
【ソースコード】 ※インデントはご容赦ください。
■regist.html (長い内容だとsubmitできない。regist.jspまで行かない。)
<html> <head> <link rel="stylesheet" href="../css/common.css" type="text/css"></head> <body><form action="../../regist.jsp">
<table class="table" align=center cellspacing=1 cellpadding=5>
<tr> <td class="labelwidth">タイトル</td><td><input type="text" name="KName" size=40 maxlength="40" value=""></td> </tr>
<tr><td class="labelwidth" valign=top><font>登録内容</font></td><td><textarea name="KContents" cols=70 rows=7></textarea></td></tr></table>
<table class="1buttontable" align=center><tr> <td align="center"><input class="buttonwidth" type="submit" name="regist" value=" 登録 "'></td> </tr> </table> </form> </body></html>
■update_form.jsp (長い内容でもsubmitできる。update.jspまで行ってSQLが発行され、テーブルが更新できる。)
<%@ page import="java.sql.ResultSet, java.io.*" contentType="text/html; charset=SJIS" %>
<%// 「編集」ボタンを押された情報を取得 String id = request.getParameter("Kid"); 省略
// テーブル用HTMLの作成
String tableHTML ="<table class=\"table\" border=1 bordercolor=\"#000000\" align=center cellspacing=0 cellpadding=7>" +"<tr><td class=\"label\">XXXNo.</td>"+"<td><input
type=\"text\" name=\"Kid\" value=\"" + id + "\" readonly=\"readonly\"></td></tr>"
+"<tr><td class=\"label\">タイトル</td>"+"<td><input type=\"text\" size=50 name=\"KName\" value=\"" + title + "\"></td></tr>"+"<tr><td class=\"label\">登録内容</td>"+"<td><textarea cols=70 rows=7 name=\"KContents\">" + explains + "</textarea></td></tr>" 省略  %>
<!-- HTMLの表示 --> 省略
<html><head><link rel='stylesheet' href='./html/css/common.css' type='text/css'> 省略</head>
<body><form method="post" action="update.jsp"><%= tableHTML %> 省略
<td align="center"><input class="buttonwidth2" type="submit" name="update" value=" 更新 "></td> 省略 </html>

このQ&Aに関連する最新のQ&A

A 回答 (1件)

regist.html の方は、


> <form action="../../regist.jsp">
と、method 指定がありません。指定していない時は method="get" 扱いになります。

一方、update_form.php の方は、
> <form method="post" action="update.jsp">
と、method="post" が指定されています。

method="get" の時は、フォームの入力データは、URLに付加された文字列という形で、ブラウザからサーバに送られます。
ところば、ブラウザによってはURLに使える文字数の上限があります。
http://d.hatena.ne.jp/Kazumi007/20090921/1253501 …
特に Internet Explorer は、その制限文字数が2083バイト程度と小さいため、
textarea などで大量のデータを送る場合、method="get"だとエラーになってしまいます。

解決策にとしては、post に対応するしかありません。
regist.jsp の方を、post によるデータ受け渡しが出来るようにした上で、
regist.php の <form> に、 method="post" を付加するようにします。

なお、本論とは関係ない話ですが、日本語ではよく「レジストする」なんて言いますが、
英語には、regist という単語はありません。
「登録する」という動詞は、英語で「register」で、
「登録」という名詞は、英語では「registration」になります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました!
登録と更新のコードの違いは何度も見たはずなのにハマッてると見落としてしまうものですね・・・(^^;
・・・というより、フォームによるデータの受け渡しの基礎知識不足でしたm(_ _)m
ご丁寧にアドバイスいただきありがとうございました!
無事動作するようになりました。

また、ファイル名についても補足説明いただき、勉強になりました。

お礼日時:2011/04/26 20:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング