速度替换列表中项目的属性不起作用

时间:2016-07-13 07:09:36

标签: java velocity

我有这段代码:

UserRssArticleDTO rssArticleDTO = new UserRssArticleDTO();
rssArticleDTO.title = "Calves won in NBA";
ArrayList<UserRssArticleDTO> dtoList = new ArrayList<UserRssArticleDTO>();
dtoList.add(rssArticleDTO);

VelocityContext context = new VelocityContext();

ArrayList<String> strList = new ArrayList<>(Arrays.asList("peasant","farmer"));
context.put("rssArticleDTOList", dtoList);
context.put("date", new Date());
context.put("time", new Date());

StringWriter swOut = new StringWriter();
String templateStr = buffer.toString();

/**
* Merge data and template
*/
Velocity.evaluate( context, swOut, "log tag name", templateStr);
System.out.println(swOut);

UserRssArticleDTO

class UserRssArticleDTO {
    public String title;
    public String desctiption;
    public String dummy;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getDesctiption() {
        return desctiption;
    }
    public void setDesctiption(String desctiption) {
        this.desctiption = desctiption;
    }
    public String getDummy() {
        return dummy;
    }
    public void setDummy(String dummy) {
        this.dummy = dummy;
    }
}

速度模板:

#foreach( $rssArticleDTO in $rssArticleDTOList )
    <div>
        <div>$date </div>
        <div>$rssArticleDTO.title</div>
        <div>$time</div>
    </div>
#end

输出为$rssArticleDTO.title,而不是显示标题的值。

如果我使用的是字符串列表或rssArticleDTOList,那么打印值就没有问题。

如果我使用$rssArticleDTO,则会打印toString方法,即哈希码。

所以请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我发现了问题的根源。 UserRssArticleDTO类与模板位于同一个类中。我将它移动到自己的java文件中,一切都开始工作了。