- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经定义了一个枚举类型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)
)
我更改了它并重新启动了我的服务器,但它似乎没有任何区别。
最佳答案
我遇到了同样的问题,最后我发现它无法按原样解决。
通过阅读 PathBindable
和 QueryStringBindable
的文档,我发现 play 框架要求 Bindable 提供无参数公共(public)构造函数。根据定义,Java 中的 enum
是不可能的。
我想为您提供与另一个(最近的)问题相同的解决方案。我只是将枚举包装到一个实现 QueryStringBindable
或 PathBindable
的小型 Wrapper 类中。
关于java - 自定义枚举的 QueryStringBindable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040611/
我已经定义了一个枚举类型Format,它实现了QueryStringBindable。我想我已经正确地实现了它,但是在我的路由文件中,我不能将我的类型指定为路由参数,因为编译器找不到它,而且我不知道如
使用 Play 2.0.1 我定义了以下路线: GET /demo/list controllers.Demos.listDemos(page: Int ?= 0, orderBy: Int ?=
我想在我的 Play-scala 项目中使用 java.sql.Date 和 Option[java.sql.Date] 作为查询参数,这不是 Play 框架的默认设置。我使用的 Play 版本是 2
您好,我正在尝试将 models.InputTimeSheetDataStore 类型的对象列表从 View 传递到 application.java,并且我得到No QueryString bind
所以我正在使用 play 2.0,并且我试图将 double 值从我的 View 传递回 Controller 应用程序,但我得到了这个错误:没有找到 Double 类型的 QueryString B
我是一名优秀的程序员,十分优秀!