2016-11-19 74 views
3

我是新来玩框架,我正在使用玩Java 2.5.9 我想要获取表单错误并使用ajax (这就是为什么我使用form.errorsAsJson()),Play-java 2.5.9 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 既不是两个消息是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); 
} 

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

+0

在你的main.scala.html中? – chabeee

回答

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

+0

感谢帕维尔回答我的问题,它的工作,你知道我在哪里可以找到所有的消息错误键吗?例如我把error.required它与'@ Required'注解一起使用,我应该为'@ Size'使用什么,我需要所有消息键的列表 –

+0

@HassaanHassaan看起来这些注释中有一个'message'字段,所以你可以[检查文档](https://playframework.com/documentation/2.5.9/api/java/play/data/validation/Constraints.MinLength.html#message--)或者通过设置你自己的值将'message'参数传递给注释。 –

+0

@HassaanHassaan你也可以直接在源代码中查看(https://github.com/playframework/playframework/blob/2.5.9/framework/src/play-java/src/main/java/play/data/验证/ Constraints.java)。 –

0

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

像这样:

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

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