Velocity 模板不在 java spark 中渲染对象
Velocity template doesn't render objects in java spark
所以,我正在尝试制作一个页面,从数据库中获取数据并将其显示在页面上。
我正在使用 Java Spark 作为后端和 Velocity 模板引擎。
我将数据库中的记录放入存储对象的数组列表中。
class DB_record {
private String id;
private String value;
public DB_record(String i, String v){
this.id = i;
this.value = v;
}
//... getters and setters
}
然后我定义了这条路线(它从数据库中获取过去项目的所有记录,并且应该将其显示在我的模板中):
get("/projects", (req, res) -> {
ArrayList<DB_records> db_data = DB.getProjects();
Map<String, Object> data = new HashMap<>();
data.put("db_data", db_data);
return new VelocityTemplateEngine().render(new ModelAndView(data, "templates/projects.vtl")); //render template
});
这是我的模板文件,它应该显示所有项目:
<ul>
#foreach ($row in $db_data)
<li>
<div>
<a href="/projects/$row.getid()" style="font-size:16px"> $row.getvalue() </a>
</div>
</li>
#end
</ul>
但是,当我访问此页面时,它没有显示 link 即 /projects/2 并将我的值作为元素的文本,而是显示:/projects/$row.getid( ) (字面上地)
它确实遍历列表,因为生成了适当数量的 < li > 元素,但文本没有呈现。
我尝试编辑我的 db_record class 以具有 public 参数,具有带吸气剂的 public 参数,带吸气剂的私有参数,但似乎没有任何效果.无论我做什么,它都不会按应有的方式呈现。
我也试过将速度变量放在花括号 { } 中,但也没有用
我完全不知道还能尝试什么,所以非常感谢您的帮助!
您唯一的错误在 a href
部分。应该是:
<a href="/projects/${row.getid()}" style="font-size:16px"> ${row.getvalue()} </a>
速度变量及其函数周围的大括号。
我已经尝试了很多方法来最终实现它。
我的Class:
//add public before class bcos of this not getting the value in my eclipse
public class DB_record implements Serializable {
private String id;
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "db_datas{" +
"id='" + id + '\'' +
", value='" + value + '\'' +
'}';
}
}
添加列表:
Map<String, Object> contextMap = new HashMap<String, Object>();
List<DB_record>db_data = new ArrayList<>();
DB_record data1 = new DB_record();
data1.setId("1");
data1.setValue("soora");
DB_record data2 = new DB_record();
data2.setId("2");
data2.setValue("tamil");
db_data.add(data1);
db_data.add(data2);
dbDataObject.setDbDatas(db_data);
contextMap.put("db_data",db_data);
最终模板:
您必须使用 属性 表达式来获取值:
<ul>
#foreach ($row in $db_data)
<li>
<div>
<a href="/projects/${row.id}" style="font-size:16px"> ${row.value} </a>
</div>
</li>
#end
</ul>
所以,我正在尝试制作一个页面,从数据库中获取数据并将其显示在页面上。
我正在使用 Java Spark 作为后端和 Velocity 模板引擎。
我将数据库中的记录放入存储对象的数组列表中。
class DB_record {
private String id;
private String value;
public DB_record(String i, String v){
this.id = i;
this.value = v;
}
//... getters and setters
}
然后我定义了这条路线(它从数据库中获取过去项目的所有记录,并且应该将其显示在我的模板中):
get("/projects", (req, res) -> {
ArrayList<DB_records> db_data = DB.getProjects();
Map<String, Object> data = new HashMap<>();
data.put("db_data", db_data);
return new VelocityTemplateEngine().render(new ModelAndView(data, "templates/projects.vtl")); //render template
});
这是我的模板文件,它应该显示所有项目:
<ul>
#foreach ($row in $db_data)
<li>
<div>
<a href="/projects/$row.getid()" style="font-size:16px"> $row.getvalue() </a>
</div>
</li>
#end
</ul>
但是,当我访问此页面时,它没有显示 link 即 /projects/2 并将我的值作为元素的文本,而是显示:/projects/$row.getid( ) (字面上地) 它确实遍历列表,因为生成了适当数量的 < li > 元素,但文本没有呈现。
我尝试编辑我的 db_record class 以具有 public 参数,具有带吸气剂的 public 参数,带吸气剂的私有参数,但似乎没有任何效果.无论我做什么,它都不会按应有的方式呈现。
我也试过将速度变量放在花括号 { } 中,但也没有用
我完全不知道还能尝试什么,所以非常感谢您的帮助!
您唯一的错误在 a href
部分。应该是:
<a href="/projects/${row.getid()}" style="font-size:16px"> ${row.getvalue()} </a>
速度变量及其函数周围的大括号。
我已经尝试了很多方法来最终实现它。
我的Class:
//add public before class bcos of this not getting the value in my eclipse
public class DB_record implements Serializable {
private String id;
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "db_datas{" +
"id='" + id + '\'' +
", value='" + value + '\'' +
'}';
}
}
添加列表:
Map<String, Object> contextMap = new HashMap<String, Object>();
List<DB_record>db_data = new ArrayList<>();
DB_record data1 = new DB_record();
data1.setId("1");
data1.setValue("soora");
DB_record data2 = new DB_record();
data2.setId("2");
data2.setValue("tamil");
db_data.add(data1);
db_data.add(data2);
dbDataObject.setDbDatas(db_data);
contextMap.put("db_data",db_data);
最终模板:
您必须使用 属性 表达式来获取值:
<ul>
#foreach ($row in $db_data)
<li>
<div>
<a href="/projects/${row.id}" style="font-size:16px"> ${row.value} </a>
</div>
</li>
#end
</ul>