最简单的JSF 2.0应用程序将无法正常工作

时间:2011-02-08 23:47:24

标签: java jsf-2 java-ee-6

我从来没有遇到过这样的问题,让最简单的东西在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;
   }
}

确定。非常基本。

这是我的xhtml页面。

 <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 个答案:

答案 0 :(得分:1)

我找到了原因。

使用SessionScoped注释的不同包。

javax.enterprise.context.SessionScoped和javax.faces.context.SessionScoped。

由于我正在使用@Named(value =“contactsBean”)注入,我需要使用javax.enterprise。 @ManagedBean(name =“contactsBean”)与javax.faces.context一起使用。