所以,我正在尝试创建一个页面,它从数据库中获取数据并在页面上显示它。
我正在使用 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
}
然后我定义了这条路线(它从DB获取过去项目的所有记录,并应在我的模板中显示):
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>
但是,当我访问此页面时,它显示的是:/projects/$row.getid()(字面意思),而不是显示链接,即将我的值作为元素的文本显示到/ projects / 2。 它确实遍历列表,正确的数量为&lt; li>生成元素,但文本不呈现。
我尝试编辑我的db_record类以获取公共参数,使用getter获取公共参数,使用getter创建私有参数,但似乎没有任何工作。无论我做什么,它都不会像现在这样呈现。
我还尝试将速度变量放在花括号{}中,但它也没有帮助
我完全迷失在我还能尝试的其他方面,所以感谢任何帮助!
答案 0 :(得分:0)
你唯一的错误在a href
部分。应该是:
<a href="/projects/${row.getid()}" style="font-size:16px"> ${row.getvalue()} </a>
速度变量周围的曲线括号及其功能。
答案 1 :(得分:0)
我已经尝试了很多方法来最终实现这一目标。
我的班级:
//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>