JSF2 (Mojarra) View Scope Managed Bean хочет, чтобы все члены были сериализуемыми - PullRequest
5 голосов
/ 28 марта 2011

Я пытаюсь преобразовать управляемый bean-компонент JSF для определения области видимости.Однако, когда я пытаюсь получить доступ к странице xhtml для этого компонента, я получаю следующую ошибку:

java.io.NotSerializableException: foo.bar.SomeDaoClass

У меня есть членвспомогательный DAO, который я использую для делегирования связанных с постоянством задач внутри компонента.Если я заставлю этот класс DAO реализовать Serializable, то другие ссылки UIComponent начнут вызывать те же ошибки!

Основной вариант использования - у меня есть ссылка, по щелчку которой я открываю всплывающее окно jquery, отображающее xhtml.страница, которая поддерживается сессионным компонентом.Когда пользователь нажимает кнопку отправки во всплывающей форме, я программно удаляю сессионный компонент.Проблема в том, что если пользователь нажимает кнопку закрытия самого всплывающего окна и нажимает на другую ссылку, указывающую на другой идентификатор, тогда отображаются те же значения (в рамках сеанса)!

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

Ответы [ 2 ]

5 голосов
/ 17 сентября 2011

Я надеюсь, что вы уже решили эту проблему, но для других людей, которые не хотят использовать область видимости сеанса и используют область видимости в качестве альтернативы, которая заставляет вас использовать реализацию serializable, вы можете использоватьtransient ключевое слово рядом со свойствами, которые вы не хотите задавать serializable, это было бы очень полезно, если вы хотите вызвать службу или дао.

пример:

@ManagedBean(name="addressTableBeanExample4")
@ViewScoped
public class ExampleBean4 implements Serializable {

    private static final long serialVersionUID = 1L;

    // non serialazable class
    private transient List<Customer> data = new ArrayList<Customer>();

    private Customer selected;
}
4 голосов
/ 29 марта 2011

Ссылаясь на блог Balusc http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html

"В двух словах: @ViewScoped обрывается, когда любой компонент UIComponent привязан к бину с использованием атрибута привязки"

...