Play-java 2.5.9 form.errorsAsJson()总是返回英文错误消息

时间:2016-11-19 00:45:56

标签: java playframework

我是玩框架的新手,我正在使用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 \u0627\u0644\u062D\u0642\u0644 这两条消息都没有被渲染,但我总是得到:

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);
}

System.out.println打印: 郎(AR)

2 个答案:

答案 0 :(得分:2)

Form.errorsAsJsonoverloaded version taking Lang parameter

public com.fasterxml.jackson.databind.JsonNode errorsAsJson(Lang lang)
// Returns the form errors serialized as Json using the given Lang.

所以你可以这样做:

result.put("errors", uomTypeForm.errorsAsJson(lang()));

只要您在conf/messages.ar中定义消息,它就会返回正确的本地化消息。我刚刚在我的项目中试过这个并且工作正常。

方法lang()defined in play.mvc.Controller

答案 1 :(得分:0)

您是否已将ar添加到conf/application.conf中支持的语言?

像这样:

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

此外,您可以删除conf/ValidationMessages_ar.properties - 您不需要此文件。