私はこのコミュニティで非常に新しいので、最初の質問を考え出しました。
私は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 のすべてのフィールドを使用できるようにします。
映画のタイトルを扱っている限り、すべてうまくいきました。
それで、私は何を間違っていますか?