3

私はこのコミュニティで非常に新しいので、最初の質問を考え出しました。

私はJSPを使用しており、単一の文字列でjsp:setParameterおよびjsp:getParameterを使用していたJSPサイトを正常に作成しました。

今、私はオブジェクト全体で同じことをしたいです(はい、文字列もオブジェクトであることを知っています:P)。私は次のことを試しました:

これは私のビーンです:

@Entity
@Table(name="TBL_SPJ_MOVIE")
public class Movie implements Serializable {
    @Id
    @Column(name="MOVIE_ID", unique=true)
    private int movieID = 0;

    @Column(name="MOVIE_BACKDROPPATH")
    private String backDropPath = "";

    @Column(name="MOVIE_ORIGINALTITLE")
    private String originalTitle = "";

    @Column(name="MOVIE_POPULARITY")
    private double popularity = 0.0;

    @Column(name="MOVIE_POSTERPATH", length=1000)
    private String posterPath = "";

    @Temporal(TemporalType.DATE)
    @Column(name="MOVIE_RELEASEDATE")
    private Date releaseDate = null;

    @Column(name="MOVIE_TITLE")
    private String title = "";

    @Column(name="MOVIE_ADULT")
    private boolean adult = false;

    @Column(name="MOVIE_BUDGET")
    private int budget = 0;

    @Column(name="MOVIE_HOMEPAGE", length=1000)
    private String homepage = "";

    @Lob
    @Column(name="MOVIE_OVERVIEW", length=1000)
    private String overview = "";

    @Column(name="MOVIE_RUNTIME")
    private int runtime = 0;

    @Column(name="MOVIE_VOTEAVERAGE")
    private double voteAverage = 0.0;

    @Column(name="MOVIE_VOTECOUNT")
    private int voteCount = 0;

    public Movie() {}

    //##########################################################################################
    @SuppressWarnings("unchecked")
    @Transient
    public List<Movie> getMovies() {
        List<Movie> movies = new ArrayList<Movie>();
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("SPJUnit");
        EntityManager em = factory.createEntityManager();

        Query query = em.createQuery("SELECT m FROM Movie m");

        movies = (List<Movie>)query.getResultList();

        return movies;
    }
    @Transient
    private Movie currentMovie = null;
    public Movie getCurrentMovie() {
            return currentMovie;
    }
    public void setCurrentMovie(Movie currentMovie) {
        this.currentMovie = currentMovie;
    }
    //##########################################################################################

    // Getter and Setter 

    public String toString() {
        return title;
    }
}

これは私のmovies.jspです

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="movie" class="de.Movie"></jsp:useBean>

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<head>
    <link href="../css/movies.css" type="text/css" rel="stylesheet">
    <title>Movie Titles</title>
</head>

<body>
    <div id="wrapper">
    <br></br>
    <h2 id="title">Movie Titles</h2>
    <br></br>

    <ul>
        <c:forEach var="movie" items="${movie.movies}">
            <li id="listElement">
                <form action="../pages/singleMovie.jsp">
                    <input type="submit" 
                           name="currentMovie" 
                           value="${movie}"
                    />
                </form>
            </li>
        </c:forEach>
    </ul>
</div>
</body>
</html>

ここには、すべての映画の大きなリストがあります。私の toString() メソッドのおかげで、すべてのタイトルが正しく印刷されていると思いますか? これらのフォームを使用して、選択したムービーを別の jsp に送信します。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="movie" class="de.Movie"></jsp:useBean>

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<head>
    <link href="../css/singleMovie.css" type="text/css" rel="stylesheet">
    <title>Movie</title>
</head>

<body>
<div id="wrapper">

    <jsp:setProperty name="movie" property="*" />

    <br></br>
    <h2 id="title"><jsp:getProperty name="movie" property="currentMovie" /></h2>
    <br></br>

</div>
</body>
</html>

singleMovie.jsp を呼び出すと次のエラーが発生するため、映画のタイトルだけが送信されたようです。

org.apache.jasper.JasperException: org.apache.jasper.JasperException:  org.apache.jasper.JasperException: PWC6338: Cannot convert "Ariel" for the attribute currentMovie of the bean de.Movie: PWC6348: Property editor not registered with the PropertyEditorManager

「アリエル」は、私が提出するために選んだ映画のタイトルです。

ムービー全体を送信して、singleMovie.jsp で Movie-Bean のすべてのフィールドを使用できるようにします。

映画のタイトルを扱っている限り、すべてうまくいきました。

それで、私は何を間違っていますか?

4

1 に答える 1