0

私は2つのJavaクラスを持っています。1 つは Java Bean で、もう 1 つはこの Java Bean クラスからのインスタンスのコレクションです。

public class Quiz{ 
  private int id;
  private String title;
  //getters and setters 
}

public class Quizzes{
  List<Quiz> quizList = new ArrayList<Quiz>;
  public Quizzes{
    //constructor to add Quiz objects to quizList
    Quiz curQuiz = new Quiz();
    ...
  }
  public List<Quiz> getQuizList(){
    return this.quizList;
  }

}

私の JSP では、クイズの ID (またはタイトル) などにアクセスしたいと考えています。これどうやってするの?私が持っている唯一のアイデアは、quizlist のオブジェクトを反復処理して getId メソッドを呼び出し、次にこの整数値をリストに追加することです。たとえば、次のようにします。

public List<Integer> getId(){
    List<Integer> idList = new ArrayList<Integer>();
    ListIterator<Quiz> ir = quizlist.listIterator();
    int id;
    while (ir.hasNext()){
        Quiz curQuiz = ir.next();
        id = curQuiz.getId();
        idList.add(id);
    }
    return idList;
}

しかし、より良い解決策はありませんか?

4

2 に答える 2

3

タグを調べることができます<jsp:useBean>。同じ構文は次のとおりです。

<jsp:useBean id= "attributeName" scope= "page | request | session | application" class= "yourPackage.yourClass"> </jsp:useBean>.

attributeNameで設定した属性の名前ですpage, request, session or application scopeyourPackage.yourClassつまり、メンバー変数Quizにアクセスする場合は beanClass です。Quiz

ここで良い例を見つけることができます

forEachjsp でアクセス可能なリストを反復処理する場合は、タグを使用できます。

<c:foreach jsp リストの反復処理

<c:forEach var="window" items="${requestScope.quizList}">
    <c:out value="${quiz.id}"/> 
    <c:out value="${quiz.name}"/>
</c:forEach>
于 2013-07-04T08:30:54.343 に答える
0

クイズごとに Id のみが必要な場合は、クイズで toString() 関数を上書きできます。

public class Quiz{ 
  private int id;
  private String title;
  //getters and setters 
}

public class Quizzes{
  List<Quiz> quizList = new ArrayList<Quiz>;
  public Quizzes{
    //constructor to add Quiz objects to quizList
    Quiz curQuiz = new Quiz();
    ...
  }
  public List<Quiz> getQuizList(){
    return this.quizList;
  }

   @Override 
   public String toString(){
return getId();
  }

}

このように toString() を呼び出すと、適切な ID が返されます。

Quiz.toString(); 

反復を次のように変更できます。

public List<Integer> getId(){
    List<Integer> idList = new ArrayList<Integer>();
    ListIterator<Quiz> ir = quizlist.listIterator();
    while (ir.hasNext()){
        idList.add(ir.next().toString());
    }
    return idList;
}
于 2013-07-04T08:36:13.180 に答える