Java JAXB列表解组不';不显示完整列表,只显示最后一个对象
所以我没什么问题。我有这样的XML:Java JAXB列表解组不';不显示完整列表,只显示最后一个对象,java,jsp,jaxb,Java,Jsp,Jaxb,所以我没什么问题。我有这样的XML: <Game> <GameTitle>Grand Theft Auto: Vice City</GameTitle> <Genres> <genre>Action</genre> <genre>Sandbox</genre> </Genres> </Game> 我尝试通过以下两种方式在
<Game>
<GameTitle>Grand Theft Auto: Vice City</GameTitle>
<Genres>
<genre>Action</genre>
<genre>Sandbox</genre>
</Genres>
</Game>
我尝试通过以下两种方式在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}
${item.genre}
0:${game.genres[0].genres}
1:${game.genres[1].genres}
2:${game.genres[2].genres}
但它只返回我
Sandobx
和0:sandbox1:2:
。也许有人知道我做错了什么 您的类注释不正确。让setter不带注释。使用xmlementwrapper
和xmlementwrapper
将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;
}
@xmlementwrapper(name=“Genres”)
@XmlElement(name=“genre”,type=Genres.class)
公共列表getGenres(){
回归体裁;
}
公共类型(列表类型){
this.genres=流派;
}
如果将列表
替换为列表
,您的代码将正常工作
诸如此类:
@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;
}
}
@XmlRootElement(name=“Game”)
@XmlAccessorType(XmlAccessType.FIELD)
公开课游戏{
@xmlement(name=“GameTitle”)
私有字符串游戏名称;
@XmlElementWrapper(name=“Genres”)
@xmlement(name=“genre”)
私人列表体裁;
公共列表getGenres(){
回归体裁;
}
公共类型(列表类型){
this.genres=流派;
}
公共字符串getGameTitle(){
返回游戏名称;
}
public void setGameTitle(字符串gameTitle){
this.gameTitle=游戏标题;
}
}
问题可能是你的类型是简单的字符串。它不起作用:/n现在它只显示了:
0:1:2:
@XmlElementWrapper( name="Genres" )
@XmlElement(name = "genre", type = Genres.class)
public List<Genres> getGenres() {
return genres;
}
public void setGenres(List<Genres> genres) {
this.genres = genres;
}
@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;
}
}