JSF + Primefaces:Datatable不会填充项目

时间:2014-05-06 21:10:26

标签: jsf primefaces datatable

我只是想为教育演示文稿设置数据表示例。在课堂上,我们做了一个小程序来管理几部电影。 现在我们应该创建一个JSF页面,然后列出特定Director的那些电影。 所以。 我的xhtml文件: http://pastebin.com/UdTxujZk

我的该文件的控制器: http://pastebin.com/4AGTJ07q

我不知道为什么我不能在主要数据表中显示那些带有标题和导演的电影。我看了一下这个例子并尝试实现它。当我搜索任何导演数据表正确设置时,所以如果我正在寻找斯皮尔伯格(我们在他们的数据库中有3部电影),那么这个表就是设置了三个单元格等。

抱歉我的英语不好,也许是代码中的混合语言。希望有人理解我的问题,可以帮助我!

太棒了!

/编辑

<?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:h="http://xmlns.jcp.org/jsf/html"
  xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
    <title>Aufgabenblatt6</title>
</h:head>
<h:body>
    <h1>Auswahl</h1>
    <h:form>
        <h:panelGrid columns="2">
            <h:outputLabel for="regName" value="Regisseur"></h:outputLabel>
            <h:inputText id="regName" value="#{accessDialog.directorName}"></h:inputText>
            <h:commandButton value="Suchen" action="#{accessDialog.findMovies()}"></h:commandButton>                                 
        </h:panelGrid>
        <h:outputLabel value="#{accessDialog.selectedMovies}"></h:outputLabel>
    <p:dataTable id="table" var="movie" value="#{accessDialog.getAusgabe()}">
        <p:column headerText="Director">
            <h:outputText value="#{movie.director}"/>
        </p:column>

        <p:column id="test" sortBy="#{movie.title}" headerText="Titel">
            <h:outputText value="#{movie.title}"/>
        </p:column>
    </p:dataTable>
    </h:form>

</h:body>

jave文件:

package de.hsos.kbse.access;

import de.hsos.kbse.movie.impl.Movie;
import de.hsos.kbse.movie.impl.MovieLister;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author lars
 */
@Named
@RequestScoped
public class AccessDialog implements Serializable {
private String directorName;
private String selectedMovies;
private Movie[] movies;
private List<Movie> ausgabe;
@Inject
private MovieLister mL;

public AccessDialog() {
    this.directorName = "";
    this.selectedMovies = "";
    this.movies = new Movie[0];
    this.ausgabe = new ArrayList<>();
}


public void findMovies(){
    setMovies(this.mL.moviesDirectedBy(this.directorName));
    if(getMovies() != null){
        for (Movie tmp : getMovies()) {
            this.selectedMovies += tmp.getTitle()+"; ";
            this.ausgabe.add(tmp);
        }
    } else {
        this.selectedMovies = "Zu diesem Autor sind keine Filme vorhanden!";
    }
}

/**
 * @return the directorName
 */
public String getDirectorName() {
    return directorName;
}

/**
 * @param directorName the directorName to set
 */
public void setDirectorName(String directorName) {
    this.directorName = directorName;
}

/**
 * @return the selectedMovies
 */
public String getSelectedMovies() {
    return selectedMovies;
}

/**
 * @param selectedMovies the selectedMovies to set
 */
public void setSelectedMovies(String selectedMovies) {
    this.selectedMovies = selectedMovies;
}

/**
 * @return the movies
 */
public Movie[] getMovies() {
    return movies;
}

/**
 * @param movies the movies to set
 */
public void setMovies(Movie[] movies) {
    this.movies = movies;
}

/**
 * @return the ausgabe
 */
public List<Movie> getAusgabe() {
    return ausgabe;
}

/**
 * @param ausgabe the ausgabe to set
 */
public void setAusgabe(List<Movie> ausgabe) {
    this.ausgabe = ausgabe;
}

}

现在的工作。我在电影课前有@Named。这导致了不存在的标题等。但是现在我尝试了一些关于primefaces及其工作的东西到目前为止。但是当我想要对这些电影进行排序时,我必须再次搜索导演。如果我点击列没有记录,然后我再次搜索它们就会被排序。

如果你可以帮助我,那将是非常好的;)我想它只是一个愚蠢的错误,这对于更习惯于jsf等的人来说是显而易见的。

0 个答案:

没有答案