Tôi đã xác định loại enum Format
triển khai QueryStringBindable
. Tôi nghĩ rằng tôi đã thực hiện nó một cách chính xác, nhưng trong tập tin tuyến đường của tôi, tôi không thể xác định loại của tôi như là một tham số tuyến đường, bởi vì trình biên dịch không thể tìm thấy nó, và tôi không có ý tưởng làm thế nào để nhập nó vào tập tin tuyến đường.QueryStringBindable cho enum tùy chỉnh
Đây là enum:
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();
}
}
Và đây là con đường của tôi:
GET /deposits controllers.Deposits.index(selectedAccountKey: Long ?= 0, format: Format ?= Format.Html)
Làm thế nào tôi có thể nói trình biên dịch về enum của tôi? Cảm ơn!
Sửa
Tôi cũng đã thử thêm các đường dẫn đến các loại trong Build.scala như đã được đề nghị trong bài viết khác:
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)
)
tôi đã thay đổi điều đó và khởi động lại máy chủ của tôi, nhưng nó dường như không tạo ra sự khác biệt nào.
Đã thử trước khi đăng. Không có con xúc xắc. – Samo