2013-03-18 27 views
0

我認爲我的問題與我的託管Bean構造函數未出現的情況有關。也就是說,如果我在構造函數中放置斷點,則應用程序不會停在斷點處。我在將PrimeFaces數據表映射到我的託管Bean時遇到困難

我得到的標題,但不是在構造函數中添加的行。

這裏是我的代碼:首先,XHTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui"> 

    <f:view contentType="text/html"> 
     <h:head> 
      <f:facet name="first"> 
       <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/> 
       <title>LOTTO CHECKER</title> 
      </f:facet> 
     </h:head> 

     <h:body> 

      <p:layout fullPage="true"> 

       <p:layoutUnit position="north" size="100" resizable="true" closable="true" collapsible="true"> 
        LOTTO CHECKER 
       </p:layoutUnit> 

       <p:layoutUnit position="south" size="100" closable="true" collapsible="true"> 
        Footer 
       </p:layoutUnit> 

       <p:layoutUnit position="west" size="175" header="Left" collapsible="true" > 

       </p:layoutUnit> 

       <p:layoutUnit position="center"> 
        <h:form id="powerBallDrawingForm"> 
         <p:dataTable value="#(lottoCheckerBean.powerBallDrawings}" var="powerBallDrawing" > 
          <p:column headerText="DATE"> 

           <h:outputText value ="#{powerBallDrawing.drawingDate}"/> 
          </p:column > 
          <p:column headerText="BALL 1"> 

           <h:outputText value="#{powerBallDrawing.ball_1}" /> 
          </p:column>     
          <p:column headerText ="BALL 2"> 

           <h:outputText value="#{powerBallDrawing.ball_2}" /> 
          </p:column>  
          <p:column headerText ="BALL 3"> 

           <h:outputText value="#{powerBallDrawing.ball_3}" /> 
          </p:column>  
          <p:column headerText ="BALL 4"> 

           <h:outputText value="#{powerBallDrawing.ball_4}" /> 
          </p:column>  
          <p:column headerText="BALL 5"> 

           <h:outputText value="#{powerBallDrawing.ball_5}" /> 
          </p:column>  
          <p:column headerText="POWER BALL"> 

           <h:outputText value="#{powerBallDrawing.powerBall}" /> 
          </p:column>  
         </p:dataTable> 
        </h:form> 
       </p:layoutUnit> 

      </p:layout> 

     </h:body> 

    </f:view> 
</html> 

現在管理的Bean

package PowerBall_BigBame_Checker; 

import java.io.Serializable; 

import java.util.ArrayList; 
import java.util.List; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 


@ManagedBean 
@SessionScoped 

public class LottoCheckerBean implements Serializable { 

    // Add business logic below. (Right-click in editor and choose 
    // "Insert Code > Add Business Method") 


    private List<PowerBallDrawing> powerBallDrawings; 

    public LottoCheckerBean() { 

     powerBallDrawings = new ArrayList<PowerBallDrawing>(); 
     powerBallDrawings.add(new PowerBallDrawing("03/16/2013",1,2,3,4,5,6)); 

    } 







    public List<PowerBallDrawing> getPowerBallDrawings() { 
     return this.powerBallDrawings; 
    } 

    public void setPowerBallDrawings(List<PowerBallDrawing> powerBallDrawings) { 
     this.powerBallDrawings = powerBallDrawings; 
    } 


} 

最後包括該表的行類:

package PowerBall_BigBame_Checker; 

import java.io.Serializable; 


public class PowerBallDrawing implements Serializable { 

    private String drawingDate; 
    private int ball_1; 
    private int ball_2; 
    private int ball_3; 
    private int ball_4; 
    private int ball_5; 
    private int powerBall; 

    public PowerBallDrawing(String drawingDate, int ball_1, int ball_2, int ball_3, 
      int ball_4, int ball_5, int powerBall) { 

     this.ball_1 = ball_1; 
     this.ball_2 = ball_2; 
     this.ball_3 = ball_3; 
     this.ball_4 = ball_4; 
     this.ball_5 = ball_5; 
     this.powerBall = powerBall; 
     this.drawingDate = drawingDate; 




    } 

    public String getDrawingDate() { 
     return drawingDate; 
    } 

    public void setDrawingDate(String drawingDate) { 
     this.drawingDate = drawingDate; 
    } 

    public int getBall_1() { 
     return ball_1; 
    } 

    public void setBall_1(int ball_1) { 
     this.ball_1 = ball_1; 
    } 

    public int getBall_2() { 
     return ball_2; 
    } 

    public void setBall_2(int ball_2) { 
     this.ball_2 = ball_2; 
    } 

    public int getBall_3() { 
     return ball_3; 
    } 

    public void setBall_3(int ball_3) { 
     this.ball_3 = ball_3; 
    } 

    public int getBall_4() { 
     return ball_4; 
    } 

    public void setBall_4(int ball_4) { 
     this.ball_4 = ball_4; 
    } 

    public int getBall_5() { 
     return ball_5; 
    } 

    public void setBall_5(int ball_5) { 
     this.ball_5 = ball_5; 
    } 

    public int getPowerBall() { 
     return powerBall; 
    } 

    public void setPowerBall(int powerBall) { 
     this.powerBall = powerBall; 
    } 
} 

我懷疑我在某個地方違反了慣例,但我沒有看到它。

+0

改爲擺脫了錯誤,但我仍然不執行構造函數,所以我得到標題但沒有數據。 – 2013-03-18 00:50:41

+2

您拼錯了value屬性:將''更改爲'>:檢查EL表達式必須放在括號中而不是括號中 – skuntsel 2013-03-18 05:38:37

+0

您的託管bean應該被標記爲.... @ManagedBean(name =」lottoCheckerBean「) – rags 2013-03-18 06:37:09

回答

0

我已經將您的類和jsf頁面添加到現有項目以查看錯誤。

你唯一的錯誤是在這條線

<p:dataTable value="#(lottoCheckerBean.powerBallDrawings}" var="powerBallDrawing"> 

正如評論說您在EL表達式有,正確的定義是

<p:dataTable value="#{lottoCheckerBean.powerBallDrawings}" var="powerBallDrawing"> 

其他沒有錯誤

+1

謝謝你的時間和你的敏銳的眼睛,我不知道我盯着那多久,並沒有沒有注意到我想要一個花括號的地方。 – 2013-03-18 20:00:39

0

你寫在構造函數中的代碼應該是下面的方法中:

公共無效setPowerBallDrawings(名單powerBallDrawings){

}

這是因爲每當你將嘗試訪問那麼相應的setter方法將被調用。

試試這個。它應該工作。