在 Velocity 模板中使用 InetAddress
Use InetAddress in Velocity template
我正在尝试在 Velocity 模板中显示当前机器的 IP 地址。我以为我可以简单地通过包含
行来做到这一点
$java.net.InetAddress.getLocalHost().getAddress()
在模板中。
但是,该行未被评估并按原样显示;日志显示空引用:
Null reference [template 'login.vm', line 43, column 11] : $java.net.InetAddress.getLocalHost().getAddress() cannot be resolved.
我做错了什么?
根据 documentation 应该按以下方式完成:
1) 将所需的 class 添加到上下文中:
Template t = ve.getTemplate("q44153836.vm");
VelocityContext context = new VelocityContext();
context.put("InetAddress", java.net.InetAddress.class);
StringWriter writer = new StringWriter();
t.merge(context, writer);
2) 使用此名称在模板中检索其方法:
$InetAddress.getLocalHost()
另请注意,$InetAddress.getLocalHost().getAddress()
将 return 您的字节数组无法显示为 ip 地址。它将显示数组的 toString()
值。最好使用 $InetAddress.getLocalHost().getHostAddress()
.
我正在尝试在 Velocity 模板中显示当前机器的 IP 地址。我以为我可以简单地通过包含
行来做到这一点$java.net.InetAddress.getLocalHost().getAddress()
在模板中。
但是,该行未被评估并按原样显示;日志显示空引用:
Null reference [template 'login.vm', line 43, column 11] : $java.net.InetAddress.getLocalHost().getAddress() cannot be resolved.
我做错了什么?
根据 documentation 应该按以下方式完成:
1) 将所需的 class 添加到上下文中:
Template t = ve.getTemplate("q44153836.vm");
VelocityContext context = new VelocityContext();
context.put("InetAddress", java.net.InetAddress.class);
StringWriter writer = new StringWriter();
t.merge(context, writer);
2) 使用此名称在模板中检索其方法:
$InetAddress.getLocalHost()
另请注意,$InetAddress.getLocalHost().getAddress()
将 return 您的字节数组无法显示为 ip 地址。它将显示数组的 toString()
值。最好使用 $InetAddress.getLocalHost().getHostAddress()
.