java - HandleBars 不呈现对象变量
问题描述
尝试在车把上渲染某些对象的变量时遇到以下问题:
我已经声明了一个静态对象
public static class Banana
{
public static String name = "PAPI PAPI";
public static int id= 9;
public Banana( )
{
}
@Override
public String toString() {
return "Banana{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
下一步是尝试在把手上渲染我的对象变量。为此,我做了以下事情:
static void test(RoutingContext ctx)
{
HttpServerRequest req = ctx.request();
HttpServerResponse resp = ctx.response();
resp.setChunked(true);
resp.putHeader("content-type", "text/html");
ctx.put("banana", new Banana());
engine.render(ctx, "src/main/java/templates","/banana.hbs",
res -> {
if (res.succeeded()) {
ctx.response().end(res.result());
} else {
ctx.fail(res.cause());
}});
}
我的模板(banana.hbs)如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>{{banana.id}}</h1>
<h1>{{banana.name}}</h1>
</body>
问题是我的 Html 是空的:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1></h1>
<h1></h1>
</body>
有人可以帮忙吗?提前致谢,
解决方案
我认为你的问题是你尝试Banana
在你的上下文中放置一个非静态实例并且没有属性id
并且name
可以通过 getter/setter 访问。
我认为您可以尝试像这样更改您的类定义:
public class Banana {
private String name;
private Integer id;
public Banana(Integer id, String name) {
this.name = name;
this.id = id;
}
// ... toString, Getters and setters ...
static class Default() {
private static final Banana instance = new Banana(9, "PAPI PAPI");
public static Banana getInstance() {
return instance;
}
}
}
接着 :
ctx.put("banana", Banana.Default.getInstance());
推荐阅读
- python - 模块'tensorflow'在anaconda中没有属性'constant'
- mongoose - 何时使用模式实例方法和静态
- python-3.x - 如何在python中准确地乘以大数
- javascript - 在 $(selector).load(URL) 之后表格准备好时运行代码
- mysql - 为什么phpmyadmin和mysql docker容器之间的连接不起作用
- sql-server - 从 SQL Server 2016 SP1 中的 QueryStore 获取报表服务器查询
- php - 不正确的条件导致 php [已解决]
- php - 将数据存储在 localStorage 并保存在数据库中
- php - 基于 WooCommerce 中购物车商品数量的额外价格
- android - 如何在 androidx.recyclerview.widget 中使用 androidx.recyclerview.selection。或者如何在 android 中使用 kotlin 在 recyclerview 中选择一个项目?