2012-01-27 5 views
0

私は、0とn - 1の間のm個の番号のソートされたリストを返すはずの次のコードを持っています。リストは修正されたが、JSPは何も印刷していないことを確認しました。誰もこれで私を助けることができますか?これは私のアクションクラスのメソッドです。JSTLが値を出力しない

public static SortedSet<Integer> createCombo(int items, int maxNum) { 
    if (items > maxNum) { 
     System.out 
       .println("Cannot create a combination longer than the highest possible number."); 
     return null; 
    } 

    for (int i = 1; i <= items; i++) { 
     int newNum = 0; 
     boolean distinctNumber = false; 
     while (! distinctNumber) { 
      newNum = (int) Math.floor(Math.random() * maxNum); 
      distinctNumber = true; 

      if (i > 1) { 
       Iterator<Integer> iterator = combo.iterator(); 
       while ((iterator.hasNext()) && (distinctNumber)) { 
        if (newNum == iterator.next()) { 
         distinctNumber = false; 
        } 
       } 
      } 
     } 
     combo.add(newNum); 
    } 

    printCombo(); 
    return combo; 
} 

これはコントローラクラスのメソッドです。

public String execute() { 
    SortedSet<Integer> combo = new TreeSet<Integer>(); 

    try { 
     if ((items == 0) || (maxNum == 0)) { 
      return "failure"; 
     } 
     combo = Combo.createCombo(items, maxNum); 
     if (combo != null) { 
      HttpSession session = (HttpSession) request.getSession(); 
      session.setAttribute("combo", combo); 
     } 

     return "success"; 
    } catch (Exception e) { 
    } 
    return "failure"; 
} 

これは私のJSPです。ブラウザにh1タグ間のテキストのみが表示されます。

<%@ page import="java.io.*"%> 
<%@ page import="java.util.List"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<html> 
<head> 
<title>Lotto Results</title> 
</head> 
<body> 
<center> 
<h1>Lotto Results</h1> 
</center> 
<s:iterator value="combo"> 
     <c:forEach var="iterator" items="${combo.iterator}" > 
      ${iterator.next} 
     </c:forEach> 
</s:iterator> 
</body> 
</html> 
+0

ブラウザで右クリックして*ソースを表示*。 JSPで生成されたHTML出力には何が表示されますか?すべてのJSPタグが解析されていますか? – BalusC

+0

いいえ、いずれも解析されていません。 –

+2

* Strutsタグを含む*はありませんか?あなたはJSTLの実装を展開していますか?あなたのweb.xmlはEL評価のために2.5+に設定されていますか?また、正確に何をしているのですか?なぜリストをセットに入れているのですか?また、1つのリストを反復するために2つのイテレータータグがあるのはなぜですか? –

答えて

0

私は自分の問題を解決しました。私はs:iteratorタグを削除し、その内部に反復ループを保持し、それを以下に変更しました。これらの変更はうまくいきました。

<c:forEach var="combo" items="${combo}"> 
    ${combo} 
</c:forEach> 
0

コンボは、Actionクラスのプロパティである必要があり、あなたは、コレクションを返すメソッドgetCombo()を持つ必要があります。その後、値が表示されます。

は、例を参照してください、私はソングとアクションと呼ばれるクラスが反復する

package vaannila; 

public class Song { 

    private String title; 
    private String genre; 

    Song(String title, String genre) 
    { 
     this.title = title; 
     this.genre = genre; 
    } 
    public String getTitle() { 
      return title; 
    } 
    public void setTitle(String title) { 
      this.title = title; 
    } 
    public String getGenre() { 
      return genre; 
    } 
    public void setGenre(String genre) { 
      this.genre = genre; 
    } 
} 

package vaannila; 

import java.util.ArrayList; 
import java.util.List; 


public class AlbumInfoAction{ 

private String title; 
private Artist artist; 
private static List&lt;Song&gt; songs = new ArrayList&lt;Song&gt;(); 

    static { 
     songs.add(new Song("Thriller","Disco")); 
     songs.add(new Song("Beat It","Rock")); 
     songs.add(new Song("Billie Jean","Pop")); 
    } 

    public String populate() 
    { 
     title = "Thriller"; 
     artist = new Artist("Michael Jackson","King of pop"); 
     return "populate"; 
    } 

    public String execute() 
    { 
     return "success"; 
    } 

    public String getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 
    public Artist getArtist() { 
     return artist; 
    } 
    public void setArtist(Artist artist) { 
     this.artist = artist; 
    } 

    public List&lt;Song&gt; getSongs() { 
     return songs; 
    } 

} 

AlbumInfoActionと呼ばれる、私はアクションクラスのプロパティとメソッドgetSongsとして歌を持っている必要がありましたが存在する必要があります。

JSPコードは、この

<table class="songTable"> 
<tr class="even"> 
<td><b>Title</b></td> 
<td><b>Genre</b></td> 
</tr> 
<s:iterator value="songs" status="songStatus"> 
<tr 
class="<s:if test="#songStatus.odd == true ">odd</s:if><s:else>even</s:else>"> 
<td><s:property value="title" /></td> 
<td><s:property value="genre" /></td> 
</tr> 
</s:iterator> 
</table> 

ようになりますが、この情報がお役に立てば幸いです。

+0

この回答は、リンクが到達不能になった場合でも役立つと思いますか?いいえ?その後、その答えを改善してください。 – BalusC

+0

提案していただきありがとうございます。答えを改善しました。 –

関連する問題