2014-01-26 4 views
-1

У меня возникла проблема с запуском простого приложения на Tomcat 7 из среды Netbeans 7.4/JDK 1.7./index.xhtml: Свойство 'nazwa' не найдено по типу java.lang.String JSF

сообщение

Ошибка: /index.xhtml: Property 'nazwa' not found on type java.lang.String

Tomcat журнала:

sty 26, 2014 2:58:37 PM com.sun.faces.context.ExceptionHandlerImpl log 
1100: JSF1073: javax.el.ELException caught during processing of RENDER_RESPONSE 6 : UIComponent-ClientId=, Message=/index.xhtml: Property 'nazwa' not found on type java.lang.String 
sty 26, 2014 2:58:37 PM com.sun.faces.context.ExceptionHandlerImpl log 
1100: /index.xhtml: Property 'nazwa' not found on type java.lang.String 
javax.el.ELException: /index.xhtml: Property 'nazwa' not found on type java.lang.String 
    at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:88) 
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) 
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:207) 
    at com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104) 
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:527) 
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:992) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    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:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2430) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2419) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 

лица-config.xml:

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 
    <managed-bean> 
     <managed-bean-name>menedzer</managed-bean-name> 
     <managed-bean-class>pl.helion.jeeweb.notowaniagieldowe.entity.Menedzer</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 
</faces-config> 

web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>faces/index.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

index.html:

<?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 xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <h1>Notowania gieldowe</h1> 
     <table> 
      <tr> 
       <th>Nazwa</th><th>Symbol</th><th>Cena</th><th>Zmiana %</th> 
      </tr> 
      <ui:repeat var="spolka" value="#(menedzer.spolki}"> 
       <tr> 
        <td>#{spolka.nazwa}</td> 
        <td>#{spolka.symbol}</td> 
        <td>#{spolka.ostatnie.cena}</td> 
        <td>#{spolka.ostatnie.zmiana}</td> 
       </tr> 
      </ui:repeat> 
     </table> 
    </h:body> 
</html> 

pl.helion.jeeweb.notowaniagieldowe.entity.Menedzer:

package pl.helion.jeeweb.notowaniagieldowe.entity; 

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

public class Menedzer { 
    private List<Spolka> spolki; 

    public List<Spolka> getSpolki() { 
     return spolki; 
    } 

    public void setSpolki(List<Spolka> spolki) { 
     this.spolki = spolki; 
    } 

    public Menedzer(){ 
     spolki = new ArrayList<Spolka>(3); 
     Date d = new Date(); 
     spolki.add(new Spolka("Kocia Spółka Węglowa", "KSW", "energetyczny", 20.0, 11.1, d)); 
     spolki.add(new Spolka("KitKompDotCom", "KKDC", "informatyczny", 90.0, 3.4, d)); 
     spolki.add(new Spolka("Kocie Dance Studio", "KDS", "rozrywkowy", 15.0, -11.7, d)); 
    } 

} 

pl.helion.jeeweb.notowaniagieldowe.entity.Spolka:

package pl.helion.jeeweb.notowaniagieldowe.entity; 

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

public class Spolka { 

    public String getNazwa() { 
     return nazwa; 
    } 

    public void setNazwa(String nazwa) { 
     this.nazwa = nazwa; 
    } 

    public String getSymbol() { 
     return symbol; 
    } 

    public void setSymbol(String symbol) { 
     this.symbol = symbol; 
    } 

    public String getSektor() { 
     return sektor; 
    } 

    public void setSektor(String sektor) { 
     this.sektor = sektor; 
    } 

    public List<Notowanie> getNotowania() { 
     return notowania; 
    } 

    public void setNotowania(List<Notowanie> notowania) { 
     this.notowania = notowania; 
    } 

    public Notowanie getOstatnie() { 
     if (this.ostatnie == null){ 
      if (this.getNotowania() != null && !this.getNotowania().isEmpty()){ 
       this.ostatnie = this.getNotowania().get(this.getNotowania().size() - 1); 
      } 
     } 
     return this.ostatnie; 
    } 

    public void setOstatnie(Notowanie ostatnie) { 
     this.ostatnie = ostatnie; 
    } 
    private String nazwa; 
    private String symbol; 
    private String sektor; 
    private List<Notowanie> notowania; 
    private Notowanie ostatnie; 

    public Spolka(){} 

    public Spolka(String nazwa, String symbol, String sektor){ 
     this.nazwa = nazwa; 
     this.symbol = symbol; 
     this.sektor = sektor; 
    } 

    public Spolka(String nazwa, String symbol, String sektor, double cena, double zmiana, Date dzien){ 
     this(nazwa, symbol, sektor); 
     this.notowania = new ArrayList<Notowanie>(); 
     this.notowania.add(new Notowanie(cena, dzien, zmiana, this)); 
    } 

} 

pl.helion.jeeweb .notowaniagieldowe.entity.Notowanie:

package pl.helion.jeeweb.notowaniagieldowe.entity; 

import java.util.Date; 

public class Notowanie { 
    private double cena; 
    private Date dzien; 
    private double zmiana; 
    private Spolka spolka; 
    public Notowanie(){} 

    public Notowanie (double cena, Date dzien, double zmiana, Spolka spolka){ 
     this.cena = cena; 
     this.dzien = dzien; 
     this.zmiana = zmiana; 
     this.spolka = spolka; 
    } 

    public double getCena() { 
     return cena; 
    } 

    public void setCena(double cena) { 
     this.cena = cena; 
    } 

    public Date getDzien() { 
     return dzien; 
    } 

    public void setDzien(Date dzien) { 
     this.dzien = dzien; 
    } 

    public double getZmiana() { 
     return zmiana; 
    } 

    public void setZmiana(double zmiana) { 
     this.zmiana = zmiana; 
    } 

    public Spolka getSpolka() { 
     return spolka; 
    } 

    public void setSpolka(Spolka spolka) { 
     this.spolka = spolka; 
    } 
} 

Что может быть Причина этого сервера не может видеть этот объект?

+0

при использовании метода с кронштейнами # {SPOLKA [ 'Nazwa']} те же показывает ошибки. Если я замените "" от index.xhtml с # {spolka.nazwa} же ошибки для # {spolka.symbol} встречается – MKO

+0

Ошибка в основном говорит о том, что 'spolka' распознается как' String' вместо экземпляра класса 'Spolka'. Проверьте, что возвращает метод getSpolki, когда jsf вызывает его. –

ответ

0

Глупая ошибка в файле index.html:

вместо <ui:repeat var="spolka" value="#(menedzer.spolki}"> должно быть <ui:repeat var="spolka" value="#{menedzer.spolki}">

отличается только одним кронштейном ('(' и '{'), для меня это не было видно .. .

Смежные вопросы