Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

リセットボタンが機能しない。

JSPでデータベースを表示し、ラジオボタン、テキストボックスなど、内容を入力し、表示する。というプログラムを作成途中なのですが、内容を入力する際にリセットボタンが機能しません。ご教授願います。

ソース

<%@ page language="java"
    import="java.sql.*, atmarkit.MyDBAccess0"
    contentType="text/html; charset=Shift_JIS" %>
    
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html>
<head><title>データベースへのアクセス</title></head>
<body>
<%
MyDBAccess0 db = new MyDBAccess0();
db.open();
/*
Statement stmt = con.createStatement(
                                      ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select * from member");
*/
ResultSet rs = db.getResultSet("select * from member order by member_id");
String tableHTML = "<table border=1>";
tableHTML += "<tr bgcolor=\"000080\"><td><font color=\"white\">ID</font></td>"
          + "<td nowrap><font color=\"white\">名前</font></td>"
          + "<td nowrap><font color=\"white\">カナ</font></td>"
          + "<td colspan=2><font color=\"white\">出欠</font></td>";

      
while(rs.next()) {
    int id = rs.getInt("member_id");
    String name = rs.getString("name");
    String kana= rs.getString("kana");
    int state = rs.getInt("attendance");
    String comment = rs.getString("comment");
        
    if(comment!=null){
    
    }
    
    String cell1;
    String cell2;
    
        
    
    
    switch(state) {
        case -1:
            cell1 = "<font color=\"red\"><b>欠席</b></font>";
            cell2 = "<br>" + comment + "<br><br>";
            break;
    
        case 1:
            cell1 = "<font color=\"blue\"><b>出席</b></font>";
            cell2 = "<br>" + comment + "<br><br>";
            break;
            
        case 2:
            cell1="<font color=\"green\"><b>未定</b></font>";
            cell2="<br>"+comment+"<br><br>";
            break;
        
            
            
            
        default:
            cell1 = "<b>未定</b>";
            cell2 = "<form action=\"MyDBAccess0_1.jsp\">"
                + "<input type=\"hidden\" name=\"member_id\" value=\"" + id + "\">"
                + "<input type=\"radio\" value=\"1\"  name=\"attendance\">出席"
                + "<input type=\"radio\" value=\"-1\" name=\"attendance\">欠席"
                + "<input type=\"radio\" value=\"2\" checked name=\"attendance\">未定<br>"
                + "<input type=\"text\" name=\"comment\" size=36></form>";
             
    }
    
    tableHTML += "<tr><td align=\"right\" bgcolor=\"A0A0A0\"><b>" + id + "</b></td>"
        + "<td nowrap>" + name + "</td><td>"+kana+"</td><td>" + cell1 + "</td><td>"
        + cell2 + "</td></tr>";
    
}

tableHTML += "</table>";

db.close();

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<p>-- データベースへのアクセス --</p>
<p>
<b>出欠状況一覧</b><br>
<%= tableHTML %>
</p>        
            <html:form action="/MyDBtou" focus="member_id">
            <br>
            
            <html:submit property="submit" value="送信"/>
            <html:reset value="りせっと"/>
            </html:form>
                  
                
</body>
</html:html> 

8

回答

83803

閲覧

8件の回答

評価

0

<form>〜</form>の中に要素が存在していません。
たぶん、送信ボタンを押しても内容は送信されないはずです。

<html:form action="/MyDBtou" focus="member_id"> を<body>の直後に移動すれば動きます。

これはどちらかといえばHTMLのルールですね。
JSPを使用する際はJava、JSP、HTML、JavaScriptなど多数の形態の処理を使用するので大変ですからめげない様にがんばってください。

評価

0

ありがとうございます。

<body>の直後に配置してもリセットの動作が確認できませんでした。

送信ボタンは機能しているんですが、その先はまだエラーなのですが^^;リセットを機能させてから見直したいと思っています。

何が原因かまったく理解しておりませんので、ご指導よろしくお願いします。

評価

0

-補足-
<body>直後に配置したところ、送信ボタンも機能しなくなりました。

評価

0

う、うーん。
全部動かなくなってしまった、と。

<html>
  <body>
    <form>
      要素
    </form>
  </body>
</html>
の形が基本形で、要素はformごとに属しているかたちになるので動かないことは無いはずなのですが。

resetの直前にあった<html:form action="/MyDBtou" focus="member_id">
を<body>の直後へ移動したのですよね?

ためしに
<html>
 <body>
          <form>
            <br>
            <input type="text">
            <input type="submit" >
            <input type="reset" >
            </form>
</body>
</html>
でHTML作ってリセットできるか確認してみてください。

これで動くのであれば、それぞれをstrutsタグへ置き換えていけば動くはずなのですが……。

評価

0

</html:form>まで一緒に移動したりしてませんか。

評価

0

default:の場合、cell2で<form>を定義しているのでおかしくなっているのでは?

評価

0

ああっ!?
本当だ。
てっきりstrutsタグだと思っていました。


評価

0

なんかコードを拝見すると、JSPとして書いているのではなくて、サーブレットをJSPとして書こうか・・としているような感も感じられたりですけど・・。
(なんかJSPらしくないような気がしたりする・・)

1.JSP(拡張子が.JSP)としても、まずHTML(.html)として書いて、正しいことを確認する。
2.JSPとして基本(初期)となるコードを追加して、正しいことを確認する。
3.(挙げられたコードで言えばswitchとか)状態に応じて変化する部分を実装して、正しいことを確認する。

とかいう手順を踏むとかすれば、出てくることもなかった質問のような・・?

なんか、JSPを使うまでもなく、サーブレットでそのまま出力しても変わらんのでは?とか思えてしまうところとかは置いといても、
手間とか、余計な時間がとか思っても、段階を踏んで確認しつつ進めていけば、シッカリしたものが"短時間に"仕上げられるんじゃないかと思ったりしますけど。

"短時間に"というのは、最初に一気にコードを書き上げて、デバッグ主体に多くの時間を潰している・・統計的にみたいなものですけど納期に間に合わんとか言ってる仕事の傾向として・・より、きちんと確認して各段階で確実にした方が、時間も短く済むし、完成度も飛躍的に高くなるんじゃないか?と思ったりするところからですけどね。
+α(各確認,バグ潰しとの格闘とか)な部分に掛かる時間はその人の技量次第かも?ですけど。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。