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

рен, что почему, но мой видоисканный компонент не сохраняется при повторном отображении той же страницы. Мне интересно, если это из-за использования шаблонов Facelet?

Вот что я сделал, чтобы помочь мне решить проблему:

Добавьте метод @PostConstruct и отлаживайте оттудаДобавьте некоторую отладку в метод установки и полученияОтладка ViewScoped, кажется, имеет много вызовов методов PostConstructИ да, состояние не сохраняется (отправьте, установите флаг в значение true, но при повторном отображении флага снова возвращается значение false)Попробуйте изменить область действия на сеанс, при сообщении об ошибке «org.glassfish.deployment.common.DeploymentException: WELD-000072 Управляемый компонент, объявляющий пассивирующую область, должен быть пассивирован» при перезапуске моей стеклянной рыбы. Пришлось сделать сериализуемым мой бин, чтобы пропустить эту ошибку.И в bean области действия сеанса PostConstruct вызывается только один раз, и состояние сохраняется

Интересно, что пошло не так с моим чехлом ViewScope?

Вот мой файл facelet: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<h:head>
    <title>#{msgs.title}</title>
    <h:outputStylesheet library="css" name="main.css" />
</h:head>
<h:body>
    <ui:composition template="/template/masterlayout.xhtml">
        <ui:define name="windowTitle">Checkbox Lab</ui:define>
        <ui:define name="heading">Checkbox Lab</ui:define>
        <ui:define name="content">
            <h:form>
                <p:messages id="messages" globalOnly="true"/>
                <h:panelGrid columns="3" styleClass="bordered">
                    <h:outputLabel for="Married" value="Married" />
                    <h:selectBooleanCheckbox label="Married" id="Married" 
                         value="#{checkboxLabBean.married}" />
                    <p:message for="Married"/>

                    <p:panel header="debug info" id="debugPanel"
                        toggleable="true" toggleSpeed="300" >
                            <h:panelGrid columns="2">
                            <h:outputText value="rendered :"/> 
                            #{checkboxLabBean.submitted}

                            <h:outputText value="married status :"/> 
                            #{checkboxLabBean.married}
                            </h:panelGrid>
                    </p:panel>
                </h:panelGrid>
                <h:commandButton value="Refresh"
                    action="#{checkboxLabBean.submit}"/>
            </h:form>
        </ui:define>
    </ui:composition>
</h:body>
</html>

А вот и мой боб:

package user.ui;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;

@Named
@ViewScoped
public class CheckboxLabBean implements Serializable {
    private boolean married = true;
    private boolean submitted;

    @PostConstruct
    public void debugPostConstruct() {
        System.out.println("Post Construct !");
    }

    public boolean isMarried() {
        return married;
    }
    public void setMarried(boolean married) {
        this.married = married;
    }
    public boolean isSubmitted() {
        System.out.println("returning submit : " + this.submitted);
        return submitted;
    }
    public void setSubmitted(boolean submitted) {
        this.submitted = submitted;
    }

    public String submit() {
        System.out.println("setting submit to true");
        this.submitted = true;
        return null;
    }
}

Вот вывод моих журналов видимости и сеанса:

вид с ограничением впервые открывается после перезапуска веб-приложения:

[# | 2010-12-24T11: 01: 11,307 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 01: 11,310 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 01: 11,310 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | возвращая отправить: ложь | #]

[# | 2010-12-24T11: 01: 11,311 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 01: 11,322 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 01: 11,322 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 34; _ThreadName = Thread-1 ; | Постстроить! | #]

вид с ограничением после нажатия на кнопку обновления

[# | 2010-12-24T11: 02: 46,129 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,130 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,131 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,131 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,131 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | параметр submit в true | #]

[# | 2010-12-24T11: 02: 46,133 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,134 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,134 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | возвращая отправить: ложь | #]

[# | 2010-12-24T11: 02: 46,134 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,136 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

[# | 2010-12-24T11: 02: 46,136 + 0700 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = Thread-1 ; | Постстроить! | #]

объем сессии впервые открывается после перезапуска веб-приложения:

[# | 2010-12-24T10: 58: 54,610 + 0700 | ИНФО | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 32; _ThreadName = резьба-1 ; | Постстроить! | #]

[# | 2010-12-24T10: 58: 54,612 + 0700 | ИНФО | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 32; _ThreadName = резьба-1 ; | возвращая отправить: ложь | #]

объем сессии после нажатия на кнопку обновления:

[# | 2010-12-24T10: 59: 14.613 + 0700 | INFO | glassfish3.0.1 | org.hibernate.validator.engine.resolver.DefaultTraversableResolver | _ThreadID = 37; _ThreadName = Thread-1; | Создан экземпляр org. hibernate.validator.engine.resolver.JPATraversableResolver |. #]

[# | 2010-12-24T10: 59: 14,615 + 0700 | ИНФО | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = резьба-1 ; | параметр submit в true | #]

[# | 2010-12-24T10: 59: 14,617 + 0700 | ИНФО | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 37; _ThreadName = резьба-1 ; | возвращая отправить: true | #]

Ответы на вопрос(1)

Ваш ответ на вопрос