2012-08-04 92 views
3

我正在尝试调用jsf中使用primefaces的属性。但是我的错误500在类型managedbean.PersonelBean上找不到。 我使用hibernate jsf和spring。在jsf中找不到类型属性

PersonelBean.java

@ManagedBean(name="personelMB") 
@SessionScoped 
public class PersonelBean implements Serializable{ 
    private static final long serialVersionUID = 1L; 

    @ManagedProperty(value="#{PersonelService}") 
    IPersonelService personelservice; 
    List<Personel> personelList; 

    private int personel_id; 
    private String pname; 
    private String pfamily; 
    private String paddress; 
    private String pphone; 
    public IPersonelService getPersonelservice() { 
     return personelservice; 
    } 
    public void setPersonelservice(IPersonelService personelservice) { 
     this.personelservice = personelservice; 
    } 
    public List<Personel> getPersonelList() { 
     personelList=new ArrayList<Personel>(); 
     personelList.addAll(getPersonelservice().getPersonels()); 
     return personelList; 
    } 
    public void setPersonelList(List<Personel> personelList) { 
     this.personelList = personelList; 
    } 
    //getter and setter method 

    public void addPersonel(){ 
     Personel personel=new Personel(); 
     personel.setPaddress(getPaddress()); 
     personel.setPersonel_id(getPersonel_id()); 
     personel.setPfamily(getPfamily()); 
     personel.setPname(getPname()); 
     personel.setPphone(getPphone()); 
     getPersonelservice().addPersonel(personel); 
    } 

} 

personel.xhtml

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html dir="rtl" 
xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
> 
<h:head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>اطلاعات پرسنلی</title> 
</h:head> 
<h:body> 
<h1>اضافه کردن پرسنل جدید</h1> 
     <h:form> 

      <h:panelGrid columns="4" > 
       شماره پرسنلی : 
       <h:inputText id="id" value="#{personelMB.personel_id}" 
        size="20" required="true" 
        label="id" > 
       </h:inputText> 
       <br></br> 
       نام : 
       <h:inputText id="name" value="#{personelMB.pname}" 
        size="20" required="true" 
        label="Name" > 
       </h:inputText> 

       نام خانوادگی: 
       <h:inputText id="family" value="#{personelMB.pfamily}" 
        size="20" required="true" 
        label="family" > 
       </h:inputText> 

       آدرس : 
       <h:inputTextarea id="address" value="#{personelMB.paddress}" 
        cols="30" rows="10" required="true" 
        label="Address" > 
       </h:inputTextarea> 


      تلفن: 
       <h:inputText id="tel" value="#{personelMB.pphone}" 
        size="20" required="true" 
        label="tel" > 
       </h:inputText> 
      </h:panelGrid> 

      <h:commandButton value="درج اطلاعات" action="#{personelMB.addPersonel()}" /> 

     </h:form> 
<h2>مشاهده اطلاعات پرسنل</h2> 
<h:form prependId="false"> 

    <p:dataTable id="dataTable" var="personel" value="#{personelMB.getPersonelList()}"> 

     <f:facet name="header"> 
      اطلاعات پرسنل 
     </f:facet> 

     <p:column> 
      <f:facet name="header"> 
       شماره پرسنلی 
      </f:facet> 

      <h:outputText value="#{personel.personel_id}" /> 

      <f:facet name="footer"> 
       کدملی 
      </f:facet> 
     </p:column> 

     <p:column headerText="نام"> 
      <h:outputText value="#{personel.pname}" /> 
     </p:column> 

     <p:column headerText="نام خانوادگی"> 
      <h:outputText value="#{personel.pfamily}" /> 
     </p:column> 

     <p:column headerText="آدرس"> 
      <h:outputText value="#{personel.paddress}" /> 
     </p:column> 
    <p:column headerText="تلفن"> 
      <h:outputText value="#{personel.pphone}" /> 
     </p:column> 
     <f:facet name="footer"> 
      In total there are #{fn:length(personelMB.getPersonelList())} personels. 
     </f:facet> 

    </p:dataTable> 

</h:form> 

</h:body> 
</html> 

,但我有此错误:

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: /personel.xhtml @58,88 value="#{personelMB.getPersonelList()}": Property 'getPersonelList' not found on type managedbean.PersonelBean 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:321) 


root cause 

javax.el.PropertyNotFoundException: /personel.xhtml @58,88 value="#{personelMB.getPersonelList()}": Property 'getPersonelList' not found on type managedbean.PersonelBean 
    com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:97) 
    org.primefaces.component.api.UIData.isLazyLoading(UIData.java:170) 
    org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:187) 
    org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:107) 
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) 
    javax.faces.render.Renderer.encodeChildren(Renderer.java:164) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389) 
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) 

我不知道什么是错的,但我addPersonel()效果很好。

回答

6

属性值表达式需要在以下语法中指定,而get(或is)前缀和不使用括号:

value="#{personelMB.personelList}" 
3

看看你的其他gettes和setter,并期待在例外的解释。

/personel.xhtml @58,88 value="#{personelMB.getPersonelList()}": Property 'getPersonelList' not found on type managedbean.PersonelBean

您使用正确的JSF EL(这件事情:#{...})为PersonelBean的其他属性:

  • #{personelMB.pname} - >转化为personelMB.getPname()
  • `#{} bean.property” - > bean.getProperty()

但突然你使用:

personelMB.getPersonelList() 

您应该使用

#{personelMB.personelList} 
+0

谢谢你,你是对的。 – samira 2012-08-04 11:47:24

-1

你可以在#{#{personelMB.getPersonelList()}工作,但如果你需要增加两个jar文件el-ap-SNAPSHOT.jarel-impl-SNAPSHOT.jar

+1

根据目前在问题中提供的信息,OP已经**已经**使用EL 2.2。这个特殊问题只是由PrimeFaces的一个bug /功能引起的。 – BalusC 2012-08-08 11:22:03

相关问题