2016-08-23 69 views
0

我的问题如下。我有一个我很好创建的列表,但我无法在我的网页上显示它。javax.el.E​​LException:在类型trainforjava.domain.Questiοn上找不到属性'askQuestiοn'

这里是POJO:

package trainforjava.domain; 

public class Question { 

    public int id; 
    public String askedQuestion; 
    public String proposal; 

    public Question() { 
     super(); 

    } 


    public Question(int id, String askedQuestion, String proposal) { 
     super(); 
     this.id = id; 
     this.askedQuestion = askedQuestion; 
     this.proposal = proposal; 
    } 


    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public void setAskedQuestion(String askedQuestion) { 
     this.askedQuestion = askedQuestion; 
    } 

    public String getAskedQuestion() { 
     return askedQuestion; 
    } 

    public void setQuestion(String askedQuestion) { 
     this.askedQuestion = askedQuestion; 
    } 


    public String getProposal() { 
     return proposal; 
    } 

    public void setProposal(String proposal) { 
     this.proposal = proposal; 
    } 

    @Override 
    public String toString() { 
     return "Question [id=" + id + ", askedQuestion=" + askedQuestion + "]"; 
    } 

} 

这里是托管bean:

package trainforjava.domain; 
import java.util.List; 
import java.util.Map; 
import javax.faces.bean.ManagedBean; 
import trainforjava.util.QuestionCreator; 

@ManagedBean 
public class QuestionBean { 

    public List<String> proposals; 
    public List<Question> questions; 
    public QuestionCreator creator = new QuestionCreator(); 

    public QuestionBean() { 

     System.out.println("beforecreate"); 
     questions = creator.createQuestions(); 
     System.out.println(questions); 
//  proposals = creator.createProposals(0); 


    } 

    public List<String> getProposals() { 
     return proposals; 
    } 
    public void setProposals(List<String> proposals) { 
     this.proposals = proposals; 
    } 
    public List<Question> getQuestions() { 
     return questions; 
    } 
    public void setQuestions(List<Question> questions) { 
     this.questions = questions; 
    } 



} 

这里是POJO从属性创建文件:

package trainforjava.util; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import java.util.Properties; 

import org.springframework.stereotype.Component; 

import trainforjava.domain.Question; 


public class QuestionCreator { 

List<Question> questions =new ArrayList<Question>(); 
    List<String> proposals = new ArrayList<String>(); 

    public List<Question> createQuestions() { 
     final Properties properties = new Properties(); 
     InputStream input = null; 
     System.out.println("createQuestions"); 

     try { 

      input = getClass().getResourceAsStream("/questions.properties"); 
      // load a properties file 
      properties.load(input); 

      // get the property value and print it out 
      for (int i = 0; i < properties.size(); i++) { 

       Question question = new Question(); 
       StringBuilder sb = new StringBuilder(); 
       sb.append("question-").append(i); 
       String askedQuestion = properties.getProperty(sb.toString()); 
       question.setAskedQuestion(askedQuestion); 
       question.setId(i); 
       questions.add(question); 

      } 

     } catch (final IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (final IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     return questions; 

    } 

    public List<String> createProposals(int key) { 
     final Properties properties = new Properties(); 
     InputStream input = null; 
     System.out.println("createProposals"); 
     try { 

      input = getClass().getResourceAsStream("/proposals.properties"); 
      // load a properties file 
      properties.load(input); 

      for(int i =0 ; i < proposals.size(); i++){ 

      int idQuestion = key; 
      System.out.println("createProposals id" + idQuestion); 
      StringBuilder sb = new StringBuilder(); 
      sb.append("proposal-").append(idQuestion).append("-").append(i); 
      String proposal = properties.getProperty(sb.toString()); 
      proposals.add(proposal); 
      System.out.println(proposals); 

      } 

     } catch (final IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (final IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     return proposals; 

    } 

} 

控制台打印我创建的列表,其名称是“疑问”,但也打印出一个堆栈跟踪:

beforecreate 
createQuestions 
[Question [id=0, askedQuestion=Quelle interface est implémentée par la Classe ArrayList ?], Question [id=1, askedQuestion=Quelle interface est implémentée par la Classe HashMap ?], Question [id=2, askedQuestion=Quelle interface est implémentée par la Classe Vector ?]] 
août 23, 2016 2:29:19 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException 
GRAVE: Error Rendering View[/index.xhtml] 
javax.el.ELException: /index.xhtml: Property 'askQuestion' not found on type trainforjava.domain.Question 
    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.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.renderRow(TableRenderer.java:385) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:161) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134) 
    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:659) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

août 23, 2016 2:29:19 AM com.sun.faces.context.ExceptionHandlerImpl log 
1100: JSF1073 : javax.el.ELException intercepté durant le traitement de RENDER_RESPONSE 6 : UIComponent-ClientId=, Message=/index.xhtml: Property 'askQuestion' not found on type trainforjava.domain.Question 
août 23, 2016 2:29:19 AM com.sun.faces.context.ExceptionHandlerImpl log 
1100: /index.xhtml: Property 'askQuestion' not found on type trainforjava.domain.Question 
javax.el.ELException: /index.xhtml: Property 'askQuestion' not found on type trainforjava.domain.Question 
    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.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.renderRow(TableRenderer.java:385) 
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:161) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134) 
    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:659) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

然后,这是为了显示该列表中的index.xhtml:

<!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://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
    <title>Test</title> 
</h:head> 

<h:body> 

    Question : 
    <h:form> 

     <h:dataTable value="#{questionBean.questions}" var="question"> 
      <h:column> 
      #{question.askQuestion} 
      </h:column> 
     </h:dataTable> 

    </h:form> 

</h:body> 
</html> 

有人能帮助我吗?

回答

0

属性名称实际上是askedQuestion,而不是askQuestion

+0

谢谢,我今天可能太累了! –

相关问题