我是玩框架的新手,正在使用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)
最佳答案
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
。