所以我没什么问题。我有这样的XML:
<Game>
<GameTitle>Grand Theft Auto: Vice City</GameTitle>
<Genres>
<genre>Action</genre>
<genre>Sandbox</genre>
</Genres>
</Game>
我想在我的JSP文件“Action”和“Sandbox”中取消支持。但它只显示我“沙盒”。这是我的代码:
@XmlRootElement(name = "Game")
public class Game {
private String gameTitle;
private List<Genres> genres = new ArrayList<Genres>();
public List<Genres> getGenres() {
return genres;
}
@XmlElement(name = "Genres", type = Genres.class)
public void setGenres(List<Genres> genres) {
this.genres = genres;
}
public String getGameTitle() {
return gameTitle;
}
@XmlElement(name = "GameTitle")
public void setGameTitle(String gameTitle) {
this.gameTitle = gameTitle;
}
}
我的类型课程:
@XmlRootElement(name = "Genres")
public class Genres {
private String genre;
public String getGenre() {
return genre;
}
@XmlElement(name = "genre")
public void setGenre(String genre) {
this.genre = genre;
}
}
我尝试以这两种方式在JSP中显示它:
<c:forEach items="${game.genres}" var="item">
${item.genre}<br>
</c:forEach>
0: ${game.genres[0].genre}
1: ${game.genres[1].genre}
2: ${game.genres[2].genre}
但它只返回Sandobx
和0: Sandbox 1: 2:
。有人可能知道我做错了什么?
答案 0 :(得分:2)
如果将List<Genres>
替换为List<String>
,您的代码仍然有效。
类似的东西:
@XmlRootElement(name = "Game")
@XmlAccessorType(XmlAccessType.FIELD)
public class Game {
@XmlElement(name="GameTitle")
private String gameTitle;
@XmlElementWrapper(name="Genres")
@XmlElement(name="genre")
private List<String> genres;
public List<String> getGenres() {
return genres;
}
public void setGenres(List<String> genres) {
this.genres = genres;
}
public String getGameTitle() {
return gameTitle;
}
public void setGameTitle(String gameTitle) {
this.gameTitle = gameTitle;
}
}
问题可能是你的流派很简单。
答案 1 :(得分:0)
您的课程注释不正确。保留setter而不注释。使用XmlElement
和XmlElementWrapper
注释getter为以下内容。
@XmlElementWrapper( name="Genres" )
@XmlElement(name = "genre", type = Genres.class)
public List<Genres> getGenres() {
return genres;
}
public void setGenres(List<Genres> genres) {
this.genres = genres;
}