gpt4 book ai didi

java - Play 2.1.1 - 从 Controller 传递映射值列表时出现模板错误

转载 作者:行者123 更新时间:2023-12-01 14:24:40 25 4
gpt4 key购买 nike

我想将 map 列表从 Controller 传递到模板。我在编译模板时遇到错误,它说“未找到:value beerMap”有人可以帮助我吗?

我试过这个方法..

Controller 类:

public static Result index(){
Map<String, String> beerMap=null;
ArrayList<Map<String, String>> beerList =
new ArrayList<Map<String, String>>();
for(ViewRow row : result) {
Map<String, String> parsedDoc = gson.fromJson(
(String)row.getDocument(), HashMap.class);
beerMap = new HashMap<String, String>();
beerMap.put("name", row.getName());
}
beerList.add(beerMap);
return ok(index.render(beerList));
}

我尝试像这样定义 templatete

@(beerList: List[Map[String,String]])
@for(beerMap <- beerList){
@beerMap.map { beer =>
<tr>
<td><a href="/beers/show/@beer.name">@beer.name</a></td>
</tr>
}
}

最佳答案

您不必在 View 中使用 map ,您可能会使用自定义模型更快地完成它,您不需要使用 @Entity 对其进行注释或使用 Model 进行扩展 code> 在这种情况下,Ebean 将不会尝试为此生成数据库表,

好处:您可以在模型的构造函数中添加一些验证或预处理,特别是当从 json 传入的数据可能包含一些错误时。您还可以添加一些方法来为您提供一些准备好的值(即 toString() )。正如您所看到的,在 View 中使用它比使用 map 更舒适,示例:

models/Beer.java

package models;

public class Beer {

public String name;
public String url;
public String description;

public Beer(String name, String url) {
this.name = name;
this.url = url;
}

public String toString() {
return this.name;
}
}

一些 Controller ...

public static Result index() {
List<Beer> beers = new ArrayList<Beer>();

// some dummy data
beers.add(new Beer("Beer A", "beer_a"));
beers.add(new Beer("Beer B", "beer_b"));

Beer beerC =new Beer("Beer C", "beer_c");
beerC.description= "Beer C has additional description";

beers.add(beerC);

return ok(index.render(beers));
}

索引 View

@(beers: List[Beer])

@main("List of beers") {

@for(beer <- beers){
<div>
<h1>@beer</h1>
<h2>@beer.description</h2>
<a href="/beers/@beer.url">@beer.name</a>
</div>
}

note: thanks to toString() method in the model @@beer is a shorthand for @@beer.name

}

关于java - Play 2.1.1 - 从 Controller 传递映射值列表时出现模板错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17259037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com