###前提・実現したいこと
参考書のプログラム(掲示板プログラム)に、下記機能を追加しようと考えています。
※現在の仕様だと、最新のメッセージ(1件)のみしか、削除できません。
・「削除チェックボックスに複数チェックを入れた場合、
パスワードが一致するものは、すべて削除する。」ようにしたい。
###発生している問題・エラーメッセージ
以下のように、実装したところ、エラーメッセージが発生しました。
<変更前>
String delindex = request.getParameter("delIndex");
int index = Integer.parseInt(delindex);
<変更後>
String[] delindex = request.getParametervaluse("delIndex"); //変更後(複数)
for(int i=0; i < delindex.length; i++){
int index = Integer.parseInt(delindex[i]);
}
エラー発生箇所:int index = Integer.parseInt(delindex);
for文内は、String型の配列をint型に変換できているのですが、
for文を使ってしまうと、下記プログラムが動きません。
・bbsManager.DeleteItem(index, password);
・BBSdataBeans側の削除処理
for文内部のみしか実行されないので、他の方法がありましたら、ご教授ください。
どのように対処したら良いかわかりません。
下記に、参考書のソースコードを記載します。
削除の処理自体は、BBSManagerBeansクラス。
##ソースコード(1)
////////////// メッセージの削除(サーブレットのソース) ///////////////////
public void doBBSDelete(HttpServletRequest request, HttpServletResponse
response, BBSDataBeans bbsData)
throws IOException, ServletException
{
**String delindex = request.getParameter("delIndex"); **
if (delindex == null) {
bbsManager.ReadArticles(0, bbsData);
return;
}
int index = Integer.parseInt(delindex);
String password = request.getParameter("pwd"); if (password == null) { bbsManager.ReadArticles(0, bbsData); return; } *DeleteItemメソッド:インデックスに対応するメッセージを取ってきてパスワードを比較し、 同じだった場合に限ってそこをnullで置き換え* bbsManager.DeleteItem(index, password); bbsManager.ReadArticles(0, bbsData);
}
##ソースコード(2)
//////// メッセージを削除 (BBSManagerBansのソースコード)////////////
public void DeleteItem(int index, String deleteKey)
{
BBSItem item;
try {
item = (BBSItem)bbsItems.get(index);
}
catch(IndexOutOfBoundsException e) {
return;
}
if (item == null) { return; } if (deleteKey.compareTo(item.deleteKey) != 0) { return; } bbsItems.set(index, null); WriteDataFile();
}