2013-03-13 93 views
0

我使用複合組件來構建自動完成組件..當我嘗試引用completeMethod.am的方法獲取此異常。獲取javax.el.PropertyNotFoundException異常

下面是代碼

在我parent.xhtml

<composite:attribute name="completefornameforreportee" 
        method-signature="java.util.List m(java.lang.String)"/> 
<p:autoComplete id="empIdText2" value="#{cc.attrs.empNameforreportee}" 
       completeMethod="#{cc.attrs.completefornameforreportee}"> 
    <p:ajax event="itemSelect" 
      listener="#{cc.attrs.bean[cc.attrs.handlerforempNamereportee]}" 
      update=":form" /> 
</p:autoComplete> 

在complete.xhtml

bean="#{autoCompleteBean}" 
completefornameforreportee="#{autoCompleteBean.completeforNameforreportee}" 

AutocompleteBean.java

public List<String> completeforNameforreportee(String query) throws Exception { 
    System.out.println("called"); 
    List<String> finalNameResults = new ArrayList<String>(); 
    return finalNameResults; 
} 

堆棧跟蹤:

javax.el.PropertyNotFoundException: /ChangeReportHierarchy.xhtml @97,55 completefornameforreportee="#{autoCompleteBean.completeforNameforreportee}": Property 'completeforNameforreportee' not found on type com.hrmsrevamp.service.ChangeReportHierarchy 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111) 
    at com.sun.faces.facelets.el.ContextualCompositeMethodExpression.invoke(ContextualCompositeMethodExpression.java:190) 
    at com.sun.faces.facelets.tag.TagAttributeImpl$AttributeLookupMethodExpression.invoke(TagAttributeImpl.java:450) 
    at org.primefaces.component.autocomplete.AutoComplete.broadcast(AutoComplete.java:358) 
    at javax.faces.component.UIData.broadcast(UIData.java:1093) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:935) 
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 
+0

向我們展示您的支持bean以及相關堆棧跟蹤,以獲得更好的幫助。 – Magnilex 2013-03-13 07:47:07

+0

嗨,感謝您的快速回復。我添加了這些 – Karthik 2013-03-13 07:53:01

+0

我不知道標記。你能指點我們的文件嗎? – 2013-03-13 08:05:31

回答

0

#{autoCompleteBean.completeforNameforreportee}預計屬性completeforNameforreportee具有預期類型和getter和setter。例如:

public <YourType> completeforNameforreportee; 

public <YourType> getCompleteforNameforreportee() { 
    return completeforNameforreportee; 
} 

public void setCompleteforNameforreportee(<YourType> completeforNameforreportee) { 
    this.completeforNameforreportee = completeforNameforreportee; 
} 
+0

但是autocomplete中的completemethod會自動觸發一個帶有String參數的方法。怎麼可能? – Karthik 2013-03-13 08:02:22

+0

然後你有一個getter和setter的String屬性。 – Magnilex 2013-03-13 08:07:14

+0

我認爲你喜歡Magnus,但請參閱[方法表達式](http://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html#bnahz)。 – 2013-03-13 08:19:14