Как использовать SimpleFormController, когда мне нужно отобразить данные в форме вне класса команд? - PullRequest
0 голосов
/ 15 февраля 2012

Я использую hibernate, Spring и Velocity в Java.

Я расширяю SimpleFormController и использую типичный объект 'User' для командного класса.Я хочу обновить или создать класс User с помощью формы, которую я отражаю обратно в спящий режим, чтобы значения можно было обновлять в базе данных.

Моя проблема заключается в том, что я хочу отобразить дополнительные данные в шаблоне скоростиразрешено в 'userEdit', но я не хочу хранить эти данные в объекте пользователя.

Мой упрощенный объект пользователя:

public class User implements Serializable {

    private String username;
    private String password;

    private Set<Object> allowedNames;

    ...
}

Мой бин определяется следующим образом:

<bean id="userEditController" class="com.UserEditController">
    <property name="sessionForm"><value>true</value></property>
    <property name="commandClass"><value>com.data.User</value></property>
    <property name="validator"><ref bean="userValidator"/></property>
    <property name="formView"><value>userEdit</value></property>
    <property name="successView"><value>UserEdit</value></property>
    <property name="dao">
        <ref bean="myDAO"/>
    </property>
</bean>

Переменная 'allowNames' содержит часть списка имен в базе данных и относится к конкретному пользователю.Мне интересно, как я могу также отобразить полный список имен (извлеченный из базы данных), чтобы я мог использовать его в моем шаблоне скорости userEdit.Потому что я хочу показать «позволенные имена» рядом с «все имена».

Использование SimpleFormController позволяет мне напрямую контролировать объект User, создавать новых пользователей или обновлять их в базе данных, однако, добавление любой дополнительной информации в форму очень сложно для меня, потому что я застрял сПользовательский объект.

'allNames' не принадлежит классу User, поэтому я попытался создать объект для хранения объекта User и набора с именем allNames.Я называю это своим классом UserEdit.Моя проблема в том, что я не могу ссылаться на переменные объекта User без аксессоров в шаблоне скорости, таких как $ command.user.username, и также не могу связать их для ошибок или использовать объект User для отражения и формирования изменений обратно в базу данных.

Мой вопрос касается того, как я могу либо использовать этот объект 'UserEdit' в своей форме, либо иным образом использовать другой подход, чтобы моя форма могла содержать пользовательские данные и другие данные, и в то же времявозможность обновления объекта User (что отражается в спящем режиме).У кого-нибудь есть подход к этому?

1 Ответ

1 голос
/ 23 февраля 2012

Что я обнаружил сам, так это то, что унаследованный код действительно не обновляет объект пользователя commandClass весной посредством какого-либо отражения.

Что я сделал, чтобы решить мою проблему, так это создать объект UserEdit.В нем содержатся все необходимые данные, поступающие из формы, которые я затем помещаю в объект User перед сохранением с использованием моего DAO.

...