2013-10-02 5 views
1

의 구성원으로 해결 될 수 없습니다<attribute>가 나는 콩이 <bean>

package controller.types; 

import java.util.ArrayList; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean 
@SessionScoped 
public class Test 
{ 

    static List<MainTableRow> rows; 

    public Test() 
    { 
     rows = new ArrayList<>(); 
    } 

    public static List<MainTableRow> getRows() 
    { 
     return rows; 
    } 

    public static void setRows(List<MainTableRow> rows) 
    { 
     Test.rows = rows; 
    } 

} 

그리고 내 XHTML 페이지입니다 :

행 :

<h:form> 
     <p:fileUpload 
      fileUploadListener="#{fileUploadController.handleFileUpload}" 
      mode="advanced" dragDropSupport="false" update="messages" 
      sizeLimit="10000000" fileLimit="3" allowTypes="/(\.|\/)(xls)$/" style="font-size: 14px"/> 

     <p:growl id="messages" showDetail="true" /> 

     <p:dataTable id="dataTable" var="mainTableRow" value="#{test.rows}" style="font-size: 14px"> 
      <f:facet name="header"> 
      Main Table 
     </f:facet> 

      <p:column sortBy="" headerText="Index"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Query"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S1"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S2"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S3"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="S9"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Uygunluk"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Kural"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Kaynak"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="Query Type"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 
      <p:column sortBy="" headerText="User Intent"> 
       <h:outputText value="#{mainTableRow.index}" /> 
      </p:column> 

     </p:dataTable> 

    </h:form> 

라인 <p:dataTable id="dataTable" var="mainTableRow" value="#{test.rows}" style="font-size: 14px">에서이 오류를 제공 테스트 구성원으로 해결할 수 없음

이유가 무엇입니까? 완성도를 들어

+2

이러한 메서드는 '정적'입니다. 그들은 콩의 구성원이 아닙니다. 인스턴스 메소드를 만들거나 그렇게 할 수 없다면 디자인을 다시 생각해보십시오. –

+0

감사합니다. 문제가 해결되었습니다. :) – yetAnotherSE

답변

3

, the documentation for managed beans가 빈 속성

As with all JavaBeans components, a property consists of a private data field and a set of accessor methods, as shown by this code:

귀하의 경우에는
private Integer userNumber = null; 
... 
public void setUserNumber(Integer user_number) { 
    userNumber = user_number; 
} 
public Integer getUserNumber() { 
    return userNumber; 
} 

에 대한 다음 상태, 당신은 접근/뮤 테이터 정적 방법을 사용했다. 이러한 메소드는 오브젝트 (bean)의 멤버가 아니기 때문에 작동하지 않습니다. 클래스의 멤버입니다. 응용 프로그램은 사용자의 test bean 구성원으로이를 해결할 수 없습니다.

해결 방법은 더 이상 static 필드와 메서드로 작업하지 않도록 클래스를 수정하는 것입니다.

@ManagedBean 
@SessionScoped 
public class Test 
{ 

    List<MainTableRow> rows; 

    public Test() 
    { 
     rows = new ArrayList<>(); 
    } 

    public List<MainTableRow> getRows() 
    { 
     return rows; 
    } 

    public void setRows(List<MainTableRow> rows) 
    { 
     this.rows = rows; 
    } 

} 
관련 문제