簡體   English   中英

為什么Apache Velocity無法處理多個點鍵

[英]Why Apache Velocity cannot handle multiple dot keys

我在使用Apache Velocity 1.7時沒有得到這個。 當我有一個這樣的虛擬機

db.connection.url = $db.customer.environment.db_url

和這樣的背景...

VelocityContext context = new VelocityContext();
context.put("db.customer.environment.db_url", "//sample_db_conn");

我收到此錯誤

由以下原因引起:org.apache.velocity.exception.MethodInvocationException:對象'java.lang.String'在db.properties.vm中不包含屬性'environment'[第2行,第42列]

但是如果我這樣說的話..就可以了...

context.put("db.db_url", "//sample_db_conn");

不知道為什么要有多個“。” 在上下文密鑰中導致此錯誤。 任何提示如何克服這一點?

點用作屬性訪問器。 當Velocity看到$db.customer.environment.db_url ,它將嘗試從db鍵下的上下文中獲取一個對象,然后嘗試在其上調用getCustomer()get("customer") ,依此類推。

因此,對於Velocity,在鍵中使用點是一個非常糟糕的主意-但是,有一些解決方法。

您需要將上下文本身放在其中,例如:

context.put("context", context);

然后您就可以在模板中執行以下操作:

$context.get("db.customer.environment.db_url")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM