2011-02-08 2 views
1

Java EE 6에서 가장 간단한 작업을하는 데 전혀 문제가 없었습니다. 저는 매우 기본적인 프로젝트를 가지고 있습니다. 나는 디버깅을 시도했다. 나는 무엇을해야할지 모른다.가장 간단한 JSF 2.0 응용 프로그램이 작동하지 않습니다.

여기 내 빈입니다.

@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없이 그것을 시도하고 그것도 작동하지 않았다.

+0

당신은 어떤 용기를 사용하고 있습니까? – Eduard

답변

1

이유를 발견했습니다.

SessionScoped 주석이있는 다른 패키지가 있습니다.

javax.enterprise.context.SessionScoped 및 javax.faces.context.SessionScoped.

@Named (value = "contactsBean") injection을 사용하고 있으므로 javax.enterprise를 사용해야합니다. @ManagedBean (name = "contactsBean")은 javax.faces.context와 함께 사용됩니다.