6

Formatを実装する列挙型を定義しましたQueryStringBindable。私はそれを正しく実装したと思いますが、コンパイラがそれを見つけることができず、ルートファイルにインポートする方法がわからないため、ルートファイルでタイプをルートパラメーターとして指定できません。

列挙型は次のとおりです。

package web;

import java.util.Map;

import play.libs.F;
import play.mvc.QueryStringBindable;

public enum Format implements QueryStringBindable<Format> {
    Html,
    Pdf,
    Csv;

    private Format value;

    @Override
    public F.Option<Format> bind(String key, Map<String, String[]> data) {
        String[] vs = data.get(key);
        if (vs != null && vs.length > 0) {
            String v = vs[0];
            value = Enum.valueOf(Format.class, v);
            return F.Option.Some(value);
        }
        return F.Option.None();
    }

    @Override
    public String unbind(String key) {
        return key + "=" + value;
    }

    @Override
    public String javascriptUnbind() {
         return value.toString();
    }
}

そして、これが私のルートです:

GET     /deposits                                    controllers.Deposits.index(selectedAccountKey: Long ?= 0, format: Format ?= Format.Html)

列挙型についてコンパイラに伝えるにはどうすればよいですか? ありがとう!

編集

また、他の投稿で推奨されているように、Build.scala の型へのパスを追加しようとしました。

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
  routesImport += "web.Format",
  resolvers += Resolver.url("My GitHub Play Repository", url("http://www.joergviola.de/releases/"))(Resolver.ivyStylePatterns)
)

それを変更してサーバーを再起動しましたが、何の違いもないようです。

4

2 に答える 2

0

ルート ファイルで修飾名を使用します。つまり、web.Format

于 2012-08-18T01:11:12.337 に答える