2012-08-04 6 views
3

primefaces를 사용하는 jsf에서 속성을 호출하려고합니다. 하지만 난 managedbean.PersonelBean 형식에서 찾을 수없는 오류 500 있습니다. 나는 hibernate jsf와 spring을 사용하고있다. PersonelBean.java이jsf에서 유형에 속성을 찾을 수 없습니다.

<?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> 

하지만 난이 오류가

@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

:

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) 접두사없이 괄호없이, 다음과 같은 구문으로 지정해야합니다 : 다른 gettes와 세터에서

value="#{personelMB.personelList}" 
3

봐 예외의 설명을 확인합니다.

/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

-1

당신이 #{#{personelMB.getPersonelList()}에서 작업 할 수 사용해야합니다,하지만 당신은 두 개의 jar 파일 el-ap-SNAPSHOT.jarel-impl-SNAPSHOT.jar를 추가 필요합니다.

+1

질문에서 지금까지 제공된 정보를 바탕으로, OP는 ** 이미 ** EL 2.2를 사용하고 있습니다. 이 특별한 문제는 PrimeFaces의 버그/기능으로 인해 발생합니다. – BalusC

관련 문제