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

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

0

javaを使ったページング処理方法について

困っていること

現在、javaを使って簡易掲示板を作成している途中ですが、 
ページング処理のロジックをどのように書いたらいいかで悩んでいます。 
アドバイスを頂けると助かります。回答よろしくお願いします。 
下記にソースコードを記載します。

実現したいこと

・現在ページ番号/全ページ番号の取得 
・現在のページより前にメッセージがあったら、前のページボタンを表示する。 
「ちなみに、1ページ最大5件まで表示できるようにしています。」

ソースコード(BBSManagerBeans-全メッセージを保持)

public class BBSManagerBeans {

///////////////////// メンバ変数 ///////////////////

final private String dataFilename = "bbs.dat"; 
protected String dataPath; 
protected List bbsItemsNoSync; 
protected List bbsItems; 
protected String logFilename;

///////////////////// コンストラクタ ///////////////////

public BBSManagerBeans() 

dataPath = ""; 
ReadDataFile(); 
}

///////////////////// コンストラクタ ///////////////////

public BBSManagerBeans(String path) 

if (path != null) 
dataPath = path; 
else 
dataPath = ""; 
ReadDataFile(); 
}

///////////////////// メッセージを取得 ///////////////////

protected BBSItem GetItem(int index) 

BBSItem item; 
try { 
item = (BBSItem)bbsItems.get(index); 

catch(IndexOutOfBoundsException e) { 
item = null; 

return item; 
}

///////////////////// メッセージを追加 ///////////////////

public void AddItem(BBSItem item) 

bbsItems.add(0,item); 
WriteDataFile(); 
}

///////////////////// メッセージを削除 ///////////////////

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(); 
}

///////////////////// メッセージ数を取得 ///////////////////

public int GetMaxItems() 

return bbsItems.size(); 
}

///////////////////// BBSDataBeansへメッセージを詰め込む ///////////////////

public void ReadArticles(int index, BBSDataBeans bbsData) 

int maxitems = GetMaxItems(); 
int items = 0; 
for(int i = 0; items < BBSDataBeans.maxItemsPerPage && index + i <  
maxitems; i ++) { 
BBSItem item = GetItem(index + i); 
if (item == null) 
continue; 
item.index = index + i; 
bbsData.setItem(items, item); 
items ++; 
bbsData.numOfItems ++; 
bbsData.lastIndex = index + i; 
if (items == BBSDataBeans.maxItemsPerPage) 
break; 

}

ソースコード(BBSDataBeans -1ページ分のメッセージを保持>

public class BBSDataBeans {

///////////////////// メンバ変数 ///////////////////

static final int maxItemsPerPage = 5; 
BBSItem[] bbsItems; 
int numOfItems; 
int lastIndex;

///////////////////// コンストラクタ ///////////////////

public BBSDataBeans() { 
bbsItems = new BBSItem[20]; 
for(int i = 0; i < maxItemsPerPage; i ++) { 
bbsItems[i] = new BBSItem(); 
}

if (bbsItems[0] == null) { 
return; 
}

numOfItems = 0; 
lastIndex = 0; 
}

///////////////////// メッセージの追加 ///////////////////

public void setItem(int index, BBSItem item) { 
if (index >= maxItemsPerPage) { 
return; 

if (item == null) { 
return; 
}

if (bbsItems[index] == null) { 
return; 

bbsItems[index].name      = item.name; 
bbsItems[index].email     = item.email; 
bbsItems[index].content   = item.content; 
bbsItems[index].subject   = item.subject; 
bbsItems[index].deleteKey = item.deleteKey; 
}

///////////////////// アクセスメソッド ///////////////////

// メッセージ数

public int getNumOfItems() { 
return numOfItems; 
}

// 投稿者名

public String getName(int index) { 
return bbsItems[index].name; 
}

// メールアドレス

public String getEmail(int index) { 
return bbsItems[index].email; 
}

// サブジェクト

public String getSubject(int index) { 
return bbsItems[index].subject; 
}

// 内容

public String getContent(int index) { 
return bbsItems[index].content; 
}

// メッセージ番号

public int getIndex(int index) { 
return bbsItems[index].index; 
}

// 次のページの最初のメッセージ番号

public int getLastIndex() { 
return lastIndex; 

}

ソースコード(jsp)

<% 
if (bbsdata.getNumOfItems() != bbsdata.maxItemsPerPage) { 
%><CENTER>最後のページです</CENTER><% 

else { 
%><CENTER><FORM action=bbsserv method=POST> 
<INPUT type=hidden value=<%=  bbsdata.getLastIndex() + 1 %> name="index"> 
<INPUT type=submit value="次のページ"> 
</FORM></CENTER><BR><% 

%>

2

回答

7658

閲覧

2件の回答

評価

0

実現したいことに対して、自分はどう思うのか、それで何を調べてどのようなことを試したのかを書く。
答えを聞くのではなく、考え方を聞いたり、自分の考え方の誤りを指摘してもらうようにする。

例えば現在の件数が全部で何ページになるかなど、小学生の算数だ。
そういうところを、1つでも自分で考えてみるんだ。

評価

0

悩んでいるのは、ソースの具体的にどこの部分でしょうか。

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