我是 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\u06270\u06270\u0644\u062D\u0642\u0644
这两条消息都没有呈现,但我总是得到:
This field is required
我的 Action 代码如下:
@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)
最佳答案
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
.
关于java - Play-java 2.5.9 form.errorsAsJson() 总是返回英文错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40688015/