Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Play java 2.5.9 form.errorsAsJson()始终返回英文错误消息_Java_Playframework - Fatal编程技术网

Play java 2.5.9 form.errorsAsJson()始终返回英文错误消息

Play java 2.5.9 form.errorsAsJson()始终返回英文错误消息,java,playframework,Java,Playframework,我不熟悉play框架,我使用的是play java 2.5.9 我试图获取表单错误并使用ajax进行渲染(这就是为什么我使用form.errorsAsJson()),错误应该以阿拉伯语显示 我已尝试将错误消息放入我的conf/messages.ar中,如下所示: #bean validation messages validation.required=لابد من إدخال قيمة في هذا الحقل error.required=لابد من إدخال قيمة في هذا

我不熟悉play框架,我使用的是play java 2.5.9 我试图获取表单错误并使用ajax进行渲染(这就是为什么我使用form.errorsAsJson()),错误应该以阿拉伯语显示

我已尝试将错误消息放入我的conf/messages.ar中,如下所示:

#bean validation messages
validation.required=لابد من إدخال قيمة في هذا الحقل
error.required=لابد من إدخال قيمة في هذا الحقل
我还尝试将以下内容放入conf/ValidationMessages_ar.properties中:

error.required=\u0627\u0644\u062D\u0642\u0644\u0645\u0637\u0644\u0648\u0628
validation.required=\u0644\u0627\u0628\u062F\u0645\u0646\u0625\u062F\u062E\u0627\u0644\u0642\u064A\u0645\u0629\u0641\u064A\u0647\u0630\u0627\u0644\u062D\u0642\u0644
这两条消息都不是renderd,但我总是得到:

This field is required
我的行动代码如下:

@Transactional
public Result addUOMType(){
    ObjectNode result = Json.newObject();
    Form<UnitOfMeasureType> uomTypeForm = formFactory.form(UnitOfMeasureType.class);
    try{
        uomTypeForm = uomTypeForm.bindFromRequest();
        System.out.println(Http.Context.current()  != null ? Http.Context.current().lang() : "");
        if(uomTypeForm.hasErrors()){
            result.put("status", "error");
            result.put("errors", uomTypeForm.errorsAsJson());
            return ok(result);
        }
        UnitOfMeasureType uomType = uomTypeForm.get();
        uomType.save();
        result.put("status", "success");
        result.put("message", Messages.get("response.success"));
    }catch (Exception exp){
        result.put("status", "error");
        result.put("errors", Json.toJson(exp.getMessage()));
    }

    return ok(result);
}
@Transactional
公共结果addUOMType(){
ObjectNode result=Json.newObject();
Form uomTypeForm=formFactory.Form(UnitOfMeasureType.class);
试一试{
uomTypeForm=uomTypeForm.bindFromRequest();
System.out.println(Http.Context.current()!=null?Http.Context.current().lang():“”);
if(uomTypeForm.hasErrors()){
结果。放置(“状态”、“错误”);
result.put(“errors”,uomTypeForm.errorsAsJson());
返回ok(结果);
}
UnitOfMeasureType uomType=uomTypeForm.get();
uomType.save();
结果。放置(“状态”、“成功”);
result.put(“message”、Messages.get(“response.success”);
}捕获(异常扩展){
结果。放置(“状态”、“错误”);
put(“errors”,Json.toJson(exp.getMessage());
}
返回ok(结果);
}
System.out.println打印:
Lang(ar)

表单。errorsAsJson
具有:

public com.fasterxml.jackson.databind.JsonNode errorsAsJson(Lang-Lang)
//返回使用给定语言序列化为Json的表单错误。
因此,您可以:

result.put(“errors”,uomTypeForm.errorsAsJson(lang());
只要您在
conf/messages.ar
中定义它们,它就会返回正确本地化的消息。我刚刚在我的项目中尝试过,效果很好


方法
lang()
是。

您是否在
conf/application.conf
中向支持的语言添加了
ar

像这样:

play.i18n.langs = [ "en", "ar" ]

另外,您可以删除
conf/ValidationMessages\u ar.properties
-您不需要这个文件。

在main.scala.html中?感谢Pawel回答我的问题,它成功了,您知道我在哪里可以找到所有消息错误键吗?例如,我将error.required与
@required
注释一起使用,我应该为
@Size
使用什么,我需要所有消息键的列表please@HassaanHassaan这些注释中似乎有一个
消息
字段,因此,您可以通过向注释传递
message
参数来设置自己的值。@Hassaanhassan您也可以进行检查。Bartkiewicz:我发现它甚至在没有传递
Http.Context.current().lang()
参数的情况下编写,只需将正确的消息键/值放入
conf/messages.ar
文件中即可