Java JAXB列表解组不';不显示完整列表,只显示最后一个对象

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> 我尝试通过以下两种方式在

所以我没什么问题。我有这样的XML:

<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;
    }
}