Простейшее приложение JSF 2.0 не будет работать - PullRequest
1 голос
/ 09 февраля 2011

У меня никогда не было такой проблемы с получением самых простых вещей для работы в Java EE 6. У меня очень простой проект.Я пробовал отладку.И т.д. Я не знаю, что делать.

Вот мой боб.

@Named(value = "contactsBean")
@SessionScoped
public class ContactsBean implements Serializable {

   @EJB
   ContactsFacade contactsEJB;
   private List<Contacts> contacts = new ArrayList<Contacts>();  

   public ContactsBean() {

   }

   public String next() {
       contacts = contactsEJB.findAll();        
       return "index";
   }

   /**
     * @return the contacts
   */
   public List<Contacts> getContacts() {
      return contacts;
   }

   /**
    * @param contacts the contacts to set
   */
   public void setContacts(List<Contacts> contacts) {
      this.contacts = contacts;
   }
}

Хорошо.Довольно просто.

Вот моя страница в формате HTML.

 <ui:define name="content">

            <h:form>
                <h:dataTable value="#{contactsBean.contacts}" var="contacts">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Name"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.name}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Street"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.street}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="City"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.city}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="State"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.state}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Zip"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.zip}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Country"/>
                        </f:facet>    
                        <h:outputText value="#{contacts.country}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Sent?"/>
                        </f:facet>    
                        <h:selectBooleanCheckbox value="#{contacts.sent}" />
                    </h:column>
                </h:dataTable>


                <h:commandButton value="next &gt;" action="#{contactsBean.next}"/>     


            </h:form>

        </ui:define>

Хорошо, когда я нажму следующую кнопку, мой список должен заполниться.По крайней мере, так всегда было в Java EE 5.Я не уверен, что я делаю неправильно.Я пытался сделать простой пагинатор, но даже это не сработало.Модель никогда не обновляется.

Что происходит в мире.Я попробовал это без EJB, и оно тоже не сработало.

1 Ответ

1 голос
/ 10 февраля 2011

Я выяснил причину.

Есть разные пакеты с аннотациями SessionScoped.

javax.enterprise.context.SessionScoped и javax.faces.context.SessionScoped.

Поскольку я использую инъекцию @Named (value = "contactsBean"), мне нужно использовать javax.enterprise.@ManagedBean (name = "contactsBean") идет с javax.faces.context.

...