Я обнаружил проблему с использованием Spring MVC/Apache Tiles.JSP EL/Apache Tiles --- объект возврата имеет составной ключ
update.jspx представляет собой форму обновления для текущего объекта (Position.java), который имеет составной ключ:
@RooJpaActiveRecord(persistenceUnit = "theUnit", transactionManager = "theManager", table = "theTable", identifierType = PositionPK.class)
Class Position{
//User user;
//Role role;
//other fields....
}
Это старое наследство класса с использованием User
и Role
в качестве составного ключа (то есть это не хороший дизайн, но мы должны жить с ним). Таким образом, у меня есть еще один составной ключ класса с использованием @RooIdentifier
@RooIdentifier
Class PositionPK extends Serializable {
User user;
Role role;
//override equals and hashCode blahblah...
}
Проблема заключается в том, на update.jspx странице, где я даю поле для обновления User
позиции, форма не возвращать никаких исключений, но Верните User
в null
,
Тогда я пытаюсь добавить поля пользователя в класс Position (не хороший дизайн, как хорошо, но для отладки цели, поэтому Пользователь существуют как в классе сущностей и класса ПК), теперь приложение бросить меня исключение:
javax.validation.ValidationException: Call to TraversableResolver.isReachable() threw an exception
Призыв к TraversableResolver.isReachable() бросил исключение
Я окопаю за исключением, кажется, класс сущности может отсутствующий геттер/сеттер или идентификатор. Поскольку все гейтеры/сеттеры управляются Roo, поэтому это не должно быть проблемой, поэтому я считаю, что проблема заключается в совместимости с тем, как Spring MVC переводит класс первичного ключа в представление jsp переднего конца и наоборот.
Любой намек был бы оценен.
Спасибо. Да, эти классы аннотируются, как в RooJavaBean, но вы правы. Большинство из этих исключений вызвано отсутствием сеттера/получателей для объекта. – Dreamer
Я обнаружил, что проблема в том, что некоторые из полей составного ключевого класса 'PositionPK' не очень хорошо представлены на странице просмотра (я использую position.user.id вместо position.id.user.id), поэтому получаю исключение , Я предполагаю, что это необходимо учитывать при использовании составного ключевого класса, поскольку существует два способа доступа к полю элемента. – Dreamer