2017-02-08 11 views
0

シンプルなXHTMLファイルと対応するJava Beanを作成しました。 Java Beanの中で、カスタムパッケージ "FilePreview"のオブジェクトを持つArrayListを生成します。これは別のパッケージで定義されています(もちろんBeanにインポートしました)。私のXHTML-Fileでは、ui-repeatを使ってリストを反復し、各要素を表示します。 get-Methodsを使ってオブジェクトのプロパティにアクセスしようとしています。JSF XHTMLファイルからカスタムJavaオブジェクトにアクセス

マイXHTML-ファイル

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:b="http://bootsfaces.net/ui" 
     xmlns:f="http://xmlns.jcp.org/jsf/core"> 
    <h:head>   
     <link href="css/stylesheet.css" rel="stylesheet" type="text/css" /> 
    </h:head> 
    <body> 
     <ui:composition template="./template.xhtml"> 
      <ui:define name="title"> 
       Dateien 
      </ui:define> 
      <ui:define name="content"> 
       <b:container> 
           <ui:repeat value="#{FileBean.files}" var="files"> 
            <b:panel title="#{files.headline}" look="primary"> 
             <h:outputText value="#{files.description}" /> 
            </b:panel> 
            <b:alert class= "file" severity="success"><strong>#{files.headline}</strong><br></br> <span>#{files.description}</span></b:alert> 
           </ui:repeat>        
       </b:container> 
      </ui:define> 
     </ui:composition> 
    </body> 
</html> 

私のJavaBean:

import de.unibremen.st.gradelog.model.FilePreview; 
import java.util.ArrayList; 

@ManagedBean(name = "FileBean") 
@SessionScoped 
public class FileBean implements Serializable { 
    // private DBHandler handler; 
    private ArrayList<FilePreview> files; 

    public void create() { 
     files = new ArrayList(); 
     files.add(new FilePreview("Hausordnung", 
       "Anbei findet Ihr die aktualisierte Hausordnung. Bitte gründlich lesen!", 
       null, null, null)); 
     } 

    public ArrayList getFiles() { 
     /** 
     * DBHandler.getFiles(userID); 
     */ 
     System.out.println("Lese die Dateien aus."); 
     create(); 
     return files; 
    } 

} 

そして最後に、クラスFilePreview:

package de.unibremen.st.gradelog.model.FilePreview 
public class FilePreview { 
    private String headline, description, authorID, fileID; 
    private File file; 

    public FilePreview(String headline, String description, String authorID, 
      String fileID, File file) { 
     this.headline = headline; 
     this.description = description; 
     this.authorID = authorID; 
     this.fileID = fileID; 
     this.file = file; 
    } 

    public String getHeadline() { 
     return headline; 
    } 

    //... more simple getters and setters 
} 

すべてがちょうど見つける動作しているようですが、私は実行するとアプリケーションと新しいページにアクセスすると、次のエラーが表示されます。

Schwerwiegend: Error Rendering View[/files.xhtml] 
javax.el.ELException: /files.xhtml @51,82 value="#{FileBean.files}": java.lang.NoClassDefFoundError: de/unibremen/st/gradelog/model/FilePreview 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114) 
    at com.sun.faces.facelets.component.UIRepeat.getValue(UIRepeat.java:279) 
    at com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:255) 
... 
Caused by: javax.el.ELException: java.lang.NoClassDefFoundError: de/unibremen/st/gradelog/model/FilePreview 
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:368) 

クラスをJSFに何らかの形で知らせなければなりませんか?私は既存のJSFプロジェクトで作業しています。新しいプロジェクトで同じことをしようとすると、すべてうまくいきました。

これを引き起こす可能性のある人は誰でも知っていますか?

+0

いただきました。..そのinit()メソッド内で起こっとクリーンを行い、構築しようと、多分、それは新しいプロジェクトで働いていた場合は輸入が –

+1

を喜ば追加し、サーバーを再起動してください... –

+0

私はいくつかのインポートを追加しました。私はinit()メソッドで他の(無関係な)ものを作ったので、init()メソッドはcreate()を意図していました。 – NielsJ

答えて

-1

管理対象BeanがFileBeanであることを宣言するfaces-config.xmlファイルを生成する必要があります。あなたはこのような何かをする必要があります:

enter image description here

+0

はい、私はそれを行い、Beanはうまく動作します。ゲッターで単純なStringを返すと問題はありませんが、私がカスタムクラスを使用すると、もう動作しません。 – NielsJ

+0

ArrayListまたはList(より一般的)を使用することはできません。これはWeb Javaプロジェクトでは機能しません。 Setを使用し、ゲッターでイテレーターを返します。私はそれのように動作し、それは大丈夫動作します。これがうまくいかない理由はわかりません。 – uheredero001

+0

hashSetクラスで作業することをお勧めします。 – uheredero001

関連する問題