0

このトピックを読みました

タイプセーフ構成のフィールドを反復処理する

いくつかの変更を加えましたが、play フレームワークで conf ファイルを反復処理する方法がまだわかりません。

  Providers=[{1234 : "CProduct"},
{12345 : "ChProduct"},
{123 : "SProduct"}]

これは providers.conf という私の Conf ファイルです。問題は、それらを反復処理してドロップダウン ボックスを作成する方法です。可能であれば[int、string]であるマップとしてそれらを取りたいと思います

私は知っている、私はそれらを取る必要があります

val config = ConfigFactory.load("providers.conf").getConfigList("Providers")

私はそのようなconfファイルを作成できますが、それを行うにはテンプレートから取得する必要があり、それをハッシュマップまたはリスト、または機能するものに変換する必要があります。

乾杯、

4

2 に答える 2

5

これがこれを行う最も効率的な方法かどうかはわかりませんが、これは機能します:

1) 設定ファイルを取得しましょう:

val config = ConfigFactory.load().getConfigList("providers")
scala> config.getConfigList("providers")
res23: java.util.List[_ <: com.typesafe.config.Config] = [Config(SimpleConfigObject({"id":"1234","name":" Product2"})), Config(SimpleConfigObject({"id":"4523","name":"Product1"})), Config(SimpleConfigObject({"id":"432","name":" Product3"}))]

2) この例では、プロバイダー エンティティを紹介します。

case class Provider(id: String, name: String)

3) 次に、構成を含むリストをプロバイダーに変換します。

import scala.collection.JavaConversions._
providers.map(conf => Provider(conf.getString("id"), conf.getString("name"))).toList
res27: List[Provider] = List(Provider(1234, Product2), Provider(4523,Product1), Provider(432, Product3))

toListデフォルトでは Java List は Buffer に変換されるため、明示的に変換する必要があります。

于 2013-10-21T09:41:32.367 に答える
1

これが私の解決策です。

   val config = ConfigFactory.load("providers.conf").getConfigList("Providers")

    var providerlist = new java.util.ArrayList[model.Provider]
    val providers = (0 until config.size())
    providers foreach {
      count => 
        val iterator = config.get(count).entrySet().iterator()

        while(iterator.hasNext()) {
          val entry = iterator.next()

          val p = new Provider(entry.getKey(), entry.getValue().render())
          providerlist.add(p);
        }
    }
    println(providerlist.get(0).providerId+providerlist.get(0).providerName)
    println(providerlist.get(33).providerId+providerlist.get(33).providerName)

と私の provider.class

package model

case class Provider(providerId: String, providerName: String) 
于 2013-10-22T12:15:56.700 に答える