プログラミング中、あった問題 07

 

・削除機能が実行すると、間違えた画面を遷移しました。

問題点:try catchがfalseの値をもらいました。

解決方法:例外処理を追加しました。

Java
public Boolean delete_list(){
        try {
            String todo= todoid.split(",");
            for(int i=1; i<=todo.length; i++)
            {
            String sql = "DELETE FROM `company_db`.`todo` WHERE  `todo_id`='" + todo[i] + "'";
           
            doDataBase(sql);
           
            }
            return true;
        }
        catch (ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException) {
            arrayIndexOutOfBoundsException.printStackTrace();
            return true;

        }catch (Exception e) {
            e.printStackTrace();
            return false;
        }
   
    }


・完了ボタンを追加しました。

問題点:一番目のボタンの機能があるけど、他のボタンがありませんでした。

解決方法:HTMLは目標を明確に認識しなかったので、他のボタンが実行できませんでした。混乱しないために、変数を追加しました。

(HTML)
<%int target = 1; %>
<p id="<%=target%>">
    <input type="checkbox" name="todoid" value="<%=rset.getString(1)%>@&<%=rset.getString(2)%>">
    <%String source = rset.getString(2);%>
    <%String result = URLEncoder.encode(source, "UTF-8");%>
    <a href="Edit?&mode=editlist&todoid=<%=rset.getString(1)%>&data=<%=result%>&id=<%=userid%>&pw=<%=userpw%>">
    <%String sign = rset.getString(2);%>
    <%sign = sign.replaceAll("(?i)(<)", "&lt;");%>
    <%sign = sign.replaceAll("(?i)(>)", "&gt;");%>
    <%=sign%>
</a>
    <input type="button" id="<%=target%>" value="完了" onclick="changeUnderline('<%=target%>');" />
</p>
    <%target=target+1; %>


・(CheckBox)何も選択しない時、失敗画面へ遷移します。

(Java)
case "deletelist":
        request.setAttribute("shain", shain);
        request.setAttribute("id", userid);
        request.setAttribute("pw", userpw);
        request.setAttribute("status", status);   
        String todo = request.getParameterValues("todoid");
        if (todo == null) {
            status = "削除失敗しました。";
            message = "もう一度選択してください。";
        }

        else {
        request.getRequestDispatcher("/delete_list.jsp").forward(request, response);
        }
        break;


・完了ボタンの文字が変更できません。
問題点:HTMLのIDが重複しました。

解決方法:新しい変数を追加しました。

(Javascript)
<script type="text/javascript">
    function changeUnderline(todo_id) {
        var btn_obj = document.getElementById("btn_" + todo_id);
        var text_obj = document.getElementById("text_" + todo_id);

       
        if (text_obj.style.textDecoration == "line-through") {
            text_obj.style.textDecoration = "none";
            btn_obj.value = "完了";
        } else {
            text_obj.style.textDecoration = "line-through";
            btn_obj.value = "未完了";
        }
    }
</script>

(HTML)
<p id="text_<%=rset.getString("todo_id")%>">
        <input type="checkbox" name="todoid"
            value="<%=rset.getString("todo_id")%>@&<%=rset.getString("todo_text")%>">
        <%
            String source = rset.getString("todo_text");
            String result = URLEncoder.encode(source, "UTF-8");
        %>
    <a href="Edit?&mode=editlist&todoid=<%=rset.getString("todo_id")%>&data=<%=result%>&id=<%=userid%>&pw=<%=userpw%>">
        <%
            String sign = rset.getString("todo_text");
            sign = sign.replaceAll("(?i)(<)", "&lt;");
            sign = sign.replaceAll("(?i)(>)", "&gt;");
        %>
        <%=sign%>
        </a> <input type="button" id="btn_<%=rset.getString("todo_id")%>" value="完了"
        onclick="changeUnderline('<%=rset.getString("todo_id")%>');" />
        </p>

・rset.getStringの修正

以前:rset.getString(1)

現在:rset.getString("todo_id")


・変数名を更新
分かりやすくなりました。

・PASSWORD変更と新規登録のPASSWORD確認機能を修正
(Javascript)
<script language='javascript' type='text/javascript'>
            function check(input) {
                if (input.value != document.getElementById('password').value) {
                    input.setCustomValidity('パスワードは正しくありません');
                } else {
                    input.setCustomValidity('');
                }
            }
</script>


プロジェクト構造
index.jsp ログイン画面 (完成)
new_ID.jsp 新規登録画面 (完成)
member.jsp 一覧画面 (完成)
delete_ID.jsp ID削除画面 (完成)
change_password.jsp パスワード変更画面 (完成)
add_list.jsp 追加画面 (完成)
delete_list.jsp 削除画面 (完成)
edit_list.jsp 編集画面 (完成)
result.jsp 結果画面 (完成)

ShainBeans.java メソッドの実行 (完成)
EditServlet.java ボタンで事件を選びます (完成)