1

我正在尝试为枚举字段创建 @select 输入。在提交表单之前一切正常。它因奇怪的验证错误而失败->“error.invalid”

这是我的代码

枚举类

package model;
...
public enum UserType {

    UserType_Admin("Administrator"), UserType_Monitor("Monitor"), UserType_Audit("Audit");
    private String desc;

    private UserType(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return Messages.get(desc);
    }

    public String getLabel() {
        return toString();
    }

    public String getKey() {
        return super.toString();
    }

    public static Map<String, String> options() {
        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();
        for (UserType ut : UserType.values()) {
            Integer o = ut.ordinal();
            options.put(o.toString(), ut.desc);
        }
        return options;
    }
}

我的实体

@Entity
public class User extends Model {
...
    @Id
    public Long                      userID;
    public UserType                  user_type;
}

斯卡拉模板

@form(routes.Users.save(userID)) {
   @select(
      userForm("user_type"),
      options(model.UserType.options),
      '_label -> Messages("UserType"), '_default -> Messages("choose_user_type"),
      '_showConstraints -> true
    )
}

在控制器上保存方法:

 public static Result save(Long userID) {
        Form<User> userForm = form(User.class).bindFromRequest();
        if (userForm.hasErrors()) {   <- here it says that has errors
          return badRequest(useredit.render(new Session(session()), userID,
         userForm, new User()));
        }
  ...
}

如果我检查 userForm 变量,我得到:

Form(of=class model.User, data={user_type=0}, value=None, errors={user_type=[ValidationError(user_type,error.invalid,[])]})

字段 user_type 具有正确的值,如果我选择第一项,则为 0,第二项为 1,依此类推。

截屏

有人对此有线索或解决方法吗?也许禁用此字段的验证?伙计们

4

0 回答 0