Я создал простой файл XHTML и соответствующий Java-компонент. Внутри Java Bean я генерирую ArrayList с объектами моего пользовательского класса «FilePreview», который определен в другом пакете (я, конечно, импортировал его в Bean). В моем XHTML-файле я использую ui-repeat для перебора списка и отображения каждого элемента. Я пытаюсь получить доступ к свойствам своих объектов, используя get-Methods.Доступ к пользовательскому объекту Java из файла JSF XHTML
Мой 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, и когда я пытался сделать то же самое с новым проектом, все работало отлично.
Кто-нибудь понял, что может вызвать это?
что происходит внутри этого метода Init() .. и добавить импорт пожалуйста, –
Если он работал с новым проектом, может попытаться сделать чистую и строить и перезапустите сервер ... –
Я добавил некоторые импорты. Метод init() предназначался для create(), потому что я сделал некоторые другие (несущественные) вещи в методе init() и не хотел беспокоить вас всем этим. – NielsJ