2013-03-18 83 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方法将被调用。

试试这个。它应该工作。