2016-09-04 5 views
0

私は、Setフィールドを含む複雑なBeanを持っています。私は私のJSPページからこの要素にアクセスしません。 私の「シト」Beanオブジェクトはこれです:コントローラが私のリスト<シトを渡す私のjspページのJSTLを使用してBeanの<Object>を取得する方法

@Entity 
@Table(name="bene") 
public class Bene { 
    @Id 
    @Column(name="idBENE") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int idBene; 

    private String tipo; 
    private String nome; 
    //get and set 
} 

>と私は上の反復する習慣:

public class Sito { 
    @Id 
    @Column(name="idSITO") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int idSito; 
    private String nome; 

    @ManyToMany(targetEntity = Bene.class, cascade = { CascadeType.ALL }) 
    @JoinTable(name = "installazione", 
      joinColumns = { @JoinColumn(name = "idSito") }, 
      inverseJoinColumns = { @JoinColumn(name = "idBene") }) 
    private Set<Bene> beni; 

    public Set<Bene> getBeni() { 
     return beni; 
    } 
    public void setBeni(Set<Bene> beni) { 
     this.beni = beni; 

    } 

    public String getListBeniString(){ 
     String listBeniString=""; 
     for(Bene b:beni){ 
      listBeniString += b.toString(); 
     } 
     return listBeniString; 
    } 

    @Override 
    public String toString() { 
     System.err.println("idSito " + getIdSito()+" "+getListBeniString()); 
     return "Sito [idSito=" + idSito + ", nome=" + nome + ", fi=" + fi + ", lambda=" + lambda + ", h=" + h + ", ente=" + ente + "]"; 
    } 
     /* Other get and set... */ 
} 

は「ベーネ」豆はこれです"beni"フィールド。私のJSPコードはこれです:

ページはレンダリングされず空白です。 どうしたのですか?

+0

それが初期化されていないので、あなたが「紅」フィールドに反復することはできません。

私のコントローラの作品はこれです。 –

+0

投稿したJSPコードに間違いはありません。多分listSitiは空です。たぶんすべてのシティーにベニの空いたセットがあるかもしれません。サーバー上で例外が発生した可能性があります。たぶんJSPでJSTLのlibを宣言するのを忘れたかもしれません。いくつかのデバッグコードを追加し、コンソールでログを見てください。デバッガを使用してください。 –

+0

"beni"フィールドは、Hibernateによって初期化されます。私は注釈を省略し、今私はそれを追加しました。 auxliary関数で "beni"の内容を出力した場合、出力は正しいです。 "listSiti"は空ではなく、 "beni"はHibernateによって正しく読み込まれます。 JSTL libは私のJSPで宣言されています。私は、キャッシュをクリーニングし、サーバーを再起動して解決しました。ありがとう – MaNuNiNjA

答えて

0

EDIT: 私は非常に奇妙な動作に気付きました。私はデバッグのために "toString()"と "getListBeniString()"を書きましたが、コード行 "System.err.println(" idSito "+ getIdSito()+" "+ getListBeniString())をコメントすると、 ; "私はそれを維持する場合、ページの結果は正しいですSito Beanのページが空白です。ブラウザ上で

Hibernate: select sito0_.idSITO as idSITO1_3_, sito0_.ente as ente2_3_, sito0_.fi as fi3_3_, sito0_.h as h4_3_, sito0_.lambda as lambda5_3_, sito0_.nome as nome6_3_ from sito sito0_ 
    idSito 2 Bene [idBene=4, tipo=Bananone, nome=lksdbsdfb]Bene [idBene=2, tipo=Radio multicanale, nome=jjjjj123]Bene [idBene=3, tipo=Transmitter, nome=9ui234] 
    Hibernate: select beni0_.idSito as idSito1_3_0_, beni0_.idBene as idBene2_2_0_, bene1_.idBENE as idBENE1_0_1_, bene1_.nome as nome2_0_1_, bene1_.tipo as tipo3_0_1_ from installazione beni0_ inner join bene bene1_ on beni0_.idBene=bene1_.idBENE where beni0_.idSito=? 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=2, nome=Scoglio Eugenio, fi=50.0, lambda=20.0, h=541, ente=CP - Roma] 
    Hibernate: select beni0_.idSito as idSito1_3_0_, beni0_.idBene as idBene2_2_0_, bene1_.idBENE as idBENE1_0_1_, bene1_.nome as nome2_0_1_, bene1_.tipo as tipo3_0_1_ from installazione beni0_ inner join bene bene1_ on beni0_.idBene=bene1_.idBENE where beni0_.idSito=? 
    idSito 3 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=3, nome=Punta Gabbiano, fi=20.0, lambda=0.1, h=84, ente=CP - Cagliari] 
    Hibernate: select beni0_.idSito as idSito1_3_0_, beni0_.idBene as idBene2_2_0_, bene1_.idBENE as idBENE1_0_1_, bene1_.nome as nome2_0_1_, bene1_.tipo as tipo3_0_1_ from installazione beni0_ inner join bene bene1_ on beni0_.idBene=bene1_.idBENE where beni0_.idSito=? 
    idSito 5 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=5, nome=Punta Gabbiano, fi=20.23, lambda=0.1, h=83, ente=CP - Cagliari] 
    Hibernate: select beni0_.idSito as idSito1_3_0_, beni0_.idBene as idBene2_2_0_, bene1_.idBENE as idBENE1_0_1_, bene1_.nome as nome2_0_1_, bene1_.tipo as tipo3_0_1_ from installazione beni0_ inner join bene bene1_ on beni0_.idBene=bene1_.idBENE where beni0_.idSito=? 
    idSito 6 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=6, nome=Punta Gabbiano, fi=20.23, lambda=10.0, h=84, ente=CP - Cagliari] 
    idSito 2 Bene [idBene=4, tipo=Bananone, nome=lksd<bsdfb]Bene [idBene=2, tipo=Radio multicanale, nome=jjjjj123]Bene [idBene=3, tipo=Transmitter, nome=9ui234] 
    idSito 3 
    idSito 5 
    idSito 6 

とエラーなし:サーバーのログは、このあるコードの行で

"System.err.println(" idSito "+ getIdSito()+" "+ getListBeniString());"サーバログはこれです:

Hibernate: select sito0_.idSITO as idSITO1_3_, sito0_.ente as ente2_3_, sito0_.fi as fi3_3_, sito0_.h as h4_3_, sito0_.lambda as lambda5_3_, sito0_.nome as nome6_3_ from sito sito0_ 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=2, nome=Scoglio Eugenio, fi=50.0, lambda=20.0, h=541, ente=CP - Roma] 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=3, nome=Punta Gabbiano, fi=20.0, lambda=0.1, h=84, ente=CP - Cagliari] 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=5, nome=Punta Gabbiano, fi=20.23, lambda=0.1, h=83, ente=CP - Cagliari] 
    INFO : com.spring.dao.SitoDAOImpl - Sito List::Sito [idSito=6, nome=Punta Gabbiano, fi=20.23, lambda=10.0, h=84, ente=CP - Cagliari] 

とブラウザ上でエラーなし、が、ページは空白です。

@Controller 
    public class ReamController { 
    private static final Logger logger = LoggerFactory.getLogger(ReamController.class); 

    /*-----------------------SERVICE---------------------------*/ 
    private SitoService sitoService; 
    @Autowired(required=true) 
    @Qualifier(value="sitoService") 
    public void setSitoService(SitoService ss){ 
    this.sitoService=ss; 
    } 

    ... 
    ... 

    /*----------------------Installazioni-----------------------------*/ 
    @RequestMapping(value = "/ricercaInstallazione", method = RequestMethod.GET) 
    public String getRicercaInstallazione(Model model) { 
     model.addAttribute("listSiti", this.sitoService.listSiti()); 
     return "ricercaInstallazione"; 
     } 
    } 

は、それは非常に奇妙です....

関連する問題