プログラミング中、あった問題 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)(<)", "<");%>
<%sign = sign.replaceAll("(?i)(>)", ">");%>
<%=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)(<)", "<");
sign = sign.replaceAll("(?i)(>)", ">");
%>
<%=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 ボタンで事件を選びます (完成)