我是玩框架的新手,我正在使用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)
答案 0 :(得分:2)
Form.errorsAsJson
有overloaded 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
- 您不需要此文件。