问题描述
Play 会将请求参数分配给动作参数,例如:
Play will assign the parameters from request to action parameters, like:
public static void createArticle(String title, String content) {
}
但它不会修剪它们,所以我们通常在动作中使用这样的代码:
But it won't trim them, so we usually to such code in the actions:
public static void createArticle(String title, String content) {
if(title!=null) title = title.trim();
if(content!=null) content = content.trim();
}
有没有办法让播放自动修剪它们?
Is there any way to let play trim them automatically?
推荐答案
有多种方法可以使用自定义绑定器实现此目的.一种方法是这样的:
There are multiple ways to achive this with custom binders.One way of doing would be this:
- 在修剪字符串的某处定义一个自定义的活页夹
使用
@As(binder=TrimmedString.class)
public class Application extends Controller {
public static class TrimmedString implements TypeBinder<String> {
@Override
public Object bind(String name, Annotation[] annotations, String value, Class actualClass, Type genericType) throws Exception {
if(value != null) {
value = value.trim();
}
return value;
}
}
public static void index(
@As(binder=TrimmedString.class) String s1,
@As(binder=TrimmedString.class) String s2,
@As(binder=TrimmedString.class) String s3) {
render(s1, s2, s3);
}
}
如果这对你来说太冗长了,只需使用 @Global
绑定器来检查自定义的 @Trim
或 @As('trimmed')
注释.TypeBinder 已经有所有可用的注释,所以这应该很容易实现.
If this is too verbose for you, simply use a @Global
binder for String which checks for a custom @Trim
or @As('trimmed')
annotation. The TypeBinder already has all annotations available so this should be very easy to implement.
所有这些都可以在自定义绑定下的文档中找到.
All this can be found in the documentation under custom binding.
这篇关于如何在 playframework 中自动修剪请求参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!