2013-03-18 1 views
1

Я обнаружил проблему с использованием 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 переднего конца и наоборот.

Любой намек был бы оценен.

ответ

1

Я не вижу аннотации для генерации геттеров и сеттеров автоматически в образцах кода, которые вы предоставили.

Поскольку вы упомянули, что Roo будет управлять геттерами и сеттерами, не могли бы вы добавить аннотацию @RooJavaBean к первому классу ключей?

+0

Спасибо. Да, эти классы аннотируются, как в RooJavaBean, но вы правы. Большинство из этих исключений вызвано отсутствием сеттера/получателей для объекта. – Dreamer

+0

Я обнаружил, что проблема в том, что некоторые из полей составного ключевого класса 'PositionPK' не очень хорошо представлены на странице просмотра (я использую position.user.id вместо position.id.user.id), поэтому получаю исключение , Я предполагаю, что это необходимо учитывать при использовании составного ключевого класса, поскольку существует два способа доступа к полю элемента. – Dreamer