4

Play アプリケーション用にいくつかの URL を構成する必要があるため、次の URL に追加しましたapplication.conf

application.url="http://www.mydomain.com"
application.url.images="http://www.anotherdomain.com"
application.url.images.logo="${application.url.images}/logo.png"
...

以下は、上記のエントリにアクセスするためにビューで使用するコードです。

@(title: String)
@import play.api.Play.current

<!DOCTYPE html>

<html>
    ...

    <img src="@{ currrent.configuration.getString("application.url.images.logo") }" />

    ...
</html>

ええと...アプリケーションを実行するたびに、次のエラーメッセージが常に表示されるので、私は夢中になっています:

/home/j3d/Projects/test-app/conf/application.conf: 14-19: application.url.images.logo has type OBJECT rather than STRING

何か案が?何か不足していますか?それともバグですか?

どうもありがとうございました。

4

1 に答える 1

14

Playで使用されるTypesafe構成ライブラリの構成は、JSONのような構造を表します。{ ... }ドット表記は、ネストされたオブジェクトを( JSONで)作成するためのシンタックスシュガーです。例えば:

application.url="http://example.com"
application.images.logo="http://example.com/img/1.png"
application.images.header="http://example.com/img/3.png"

次のJSONと同等です。

{
  "application": {
    "url": "http://example.com",
    "images": {
      "logo": "http://example.com/img/1.png",
      "header": "http://example.com/img/3.png"
    }
  }
}

あなたの例では、最初に文字列をに割り当て、次に文字列ではなくJSONオブジェクトのようにapplication.urlキーを追加しようとします(key urlin )。application.url.imagesこの場合のTypesafeConfigの正確な動作と、構成ファイルを読み取ったときにすぐにエラーが発生しない理由はわかりません。

構成キーの階層を再配置してみてください。

application.url.prefix="http://www.mydomain.com"
application.url.images.prefix="http://www.anotherdomain.com"
application.url.images.logo="${application.url.images}/logo.png"

これapplication.urlは、キーと。を持つオブジェクトであり、キーと。を持つオブジェクトprefixです。imagesapplication.url.imagesprefixlogo

于 2013-02-12T08:24:34.863 に答える