Подтвердить что ты не робот

Playframework Подтвержденное "поле" JSR-303 не имеет соответствующего доступа для привязки данных

Когда я добавил этот код в свой проект

Form<User> filledForm2 = userSignupForm.bindFromRequest();

Он перестает работать, показывая сообщение об ошибке:

Execution exception
[IllegalStateException: JSR-303 validated property 'Password' does not have a corresponding accessor for data binding - check your DataBinder configuration (bean property versus direct field access)]

Мой класс User был таким:

class User{
String username;
String Password;
}

Теперь, как проверить/изменить конфигурацию DataBinder в java play framework?

4b9b3361

Ответ 1

На самом деле это не должно происходить, поскольку Play автоматически генерирует геттеры и сеттеры, см. комментарий Guillaume.

Поэтому возможно, что ваша среда IDE вызывает проблемы, например. Комментарий Guillaume re Eclipse. Или что ваш sbt-кеш поврежден и нуждается в очистке, что вы можете сделать с помощью play clean-all (читать об этом здесь)

Кстати, изменение вашего атрибута Password на Password может привести к повторному созданию кэша и, следовательно, устранению проблемы.

Ответ 2

Моя среда - Mac OS X 10.9.5 и запускает CentOS 7 с Vagrant. На CentOS возникла одна и та же проблема, но на Mac OS этого не произошло. Версия Play Framework - 2.3.8.

Комменад ниже не работал в моем случае:

  activator clean
  activator clean-files

Хотя это так странно, мне нужно было определить getter и setter для успешного использования Play Framework в CentOS7 следующим образом:

@Entity
public class Message extends Model{

    @Id
    public long id;

    @Constraints.Required
    public String name;


    //Add getter and setter to work successfully...
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Ответ 3

Я получил ту же ошибку, пытающуюся проверить поле int в POJO, используя @Min(value = 0).

Решено, поставив аннотацию на геттер в сочетании с @Valid в моей bean.

Ответ 4

Имел ту же проблему...

Чтобы удалить эту ошибку, вы должны определить свои переменные как общедоступные.

class User{
   public String username;
   public String password;
}