2013-02-06 6 views
0

내가 javax.el.PropertyNotFoundException : 부동산의 'printIDs가'형식을 찾을 수 없습니다하지만이 속성이

javax.el.PropertyNotFoundException: Property 'printIDs' not found on type pl.com.pir.beans.SelectedItemBean 
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237) 
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:214) 
at javax.el.BeanELResolver.property(BeanELResolver.java:325) 
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85) 
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
at org.apache.el.parser.AstValue.getValue(AstValue.java:183) 
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) 
at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217) 
at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157) 
at com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) 
at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) 
at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) 
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437) 
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124) 
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:139) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
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:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
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:1004) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

하지만

내 코드에서이 방법이 주석 예외가 주석, 나는 웹 브라우저 catche을 취소 시도 쿠키, 코드에서 'printIDs'문자열을 검색하고 모든 발생에 대해서도 주석을 달았습니다. face-config.xml 및 web.xml을보고 tomcat webapps 디렉토리의 webapp를 삭제하고 PC를 다시 시작합니다. 아무 도움이되지 않습니다.

 <!-- MENU GENERATOR --> 
    <h:panelGroup layout="block" id="produktMenu"> 
      <o:dataTable value="#{productBean.productList}" var="produkt" pageSize="10" 
         style="margin-top: 15px; width: 100%; height: 420px;"> 
         <o:multipleRowSelection rowDatas="#{productBean.list}" style="background: #a4aec5; color: white;" /> 
      <o:columnReordering /> 
      <f:facet name="columnMenu"> 
       <o:columnMenu /> 
      </f:facet> 

      <o:column header="Kategoria" width="7%" 
       sortingExpression="#{produkt.kategoria}" 
       bodyStyle="padding-left: 5px; padding-right: 5px;" 
       headerStyle="text-align: left; padding-left: 5px; padding-right: 5px;"> 
       <f:facet name="subHeader"> 
        <o:dropDownFieldFilter maxlength="4" customValueAllowed="false" /> 
       </f:facet> 
       <h:outputText value="#{produkt.kategoria}" /> 
      </o:column> 

      <o:selectionColumn style="width: 6%;" sortable="true" 
       header="Selection"> 
       <f:facet name="header"> 
        <o:selectAllCheckbox /> 
       </f:facet> 
      </o:selectionColumn> 
      <f:facet name="below"> 
        <o:dataTablePaginator id="paginator" /> 
       </f:facet> 
       <o:column id="symbolCol1" sortingExpression="#{produkt.symbol}"> 
        <f:facet name="header"> 
         Symbol 
        </f:facet> 
        <h:outputText value="#{produkt.symbol}" /> 
       </o:column> 
       <o:column id="opisCol1" sortingExpression="#{produkt.opis}"> 
        <f:facet name="header"> 
         Opis 
        </f:facet> 
        <h:outputText value="#{produkt.opis}" /> 
       </o:column> 
       <o:column id="cenaCol1" sortingExpression="#{produkt.cena}"> 
        <f:facet name="header"> 
         Cena 
        </f:facet> 
        <h:outputText value="#{produkt.cena}" /> 
       </o:column> 
      </o:dataTable> 

    </h:panelGroup> 
    <h:commandButton value="Dodaj" action="#{selectedItemBean.submit}" /> 

    <o:dataTable value="#{productBean.list}" var="l" id="resultTable"> 
     <o:column id="resultSumbolCol" sortingExpression="#{l.symbol}"> 
      <f:facet name="header"> 
         Symbol 
        </f:facet> 


      <h:outputText value="#{l.symbol}" /> 
     </o:column> 
     <o:column id="resultOpisCol" sortingExpression="#{l.opis}"> 
      <f:facet name="header"> 
         Opis 
        </f:facet> 
      <h:outputText value="#{l.opis}" /> 
     </o:column> 
     <o:column id="resultCenaCol" sortingExpression="#{l.cena}"> 
      <f:facet name="header"> 
         Cena 
        </f:facet> 
      <h:outputText value="#{l.cena}" /> 
     </o:column> 
    </o:dataTable> 

SelectedItemBean 소스 :

public String submit() { 
    for (Map.Entry<Integer, Boolean> entry : selectedIDs.entrySet()) { 
     if (entry.getValue() == true) { 
      System.out.println("id: " + entry.getKey() + ", " 
        + entry.getValue()); 
      id.add(entry.getKey()); 
     } 
    } 
    System.out.println("SelectedItemBean.submit() --> " + id.size()); 
    return "selected"; 
} 

public String printIDs() { 
    int i = 0; 
    if (id.isEmpty()) 
     return null; 
    System.out.println("printIDs <--"); 
    Iterator<Integer> it = id.iterator(); 
    while (it.hasNext()) { 
     i++; 
     System.out.println(it.next()); 
    } 
    System.out.println("suma produktow: " + i + "\nprintIDs -->"); 
    pb = new ProductBean(); 
    StringParse sp = new StringParse(); 
    idList = sp.prepareInStatement(id); 
    try { 
     list = pb.getProductByID(idList, 2); 
     suma = cumputeCosts(list); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return "TESTprintIDs"; 
} 

왜 내가이 예외가 계속?

답변

1

SelectedItemBean에는 printIDs 필드의 접근자가 있어야합니다.

public class SelectedItemBean{ 
    private String printIDs; 

    private getPrintIDs(){ 
     return printIds; 
    } 
} 

표현식 언어는 속성 확인을 위해 getter 메서드를 사용합니다. ,

public String getPrintIDs() { //Notice new signature 
    int i = 0; 
    if (id.isEmpty()) 
     return null; 
    System.out.println("printIDs <--"); 
    Iterator<Integer> it = id.iterator(); 
    while (it.hasNext()) { 
     i++; 
     System.out.println(it.next()); 
    } 
    System.out.println("suma produktow: " + i + "\nprintIDs -->"); 
    pb = new ProductBean(); 
    StringParse sp = new StringParse(); 
    idList = sp.prepareInStatement(id); 
    try { 
     list = pb.getProductByID(idList, 2); 
     suma = cumputeCosts(list); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return "TESTprintIDs"; 
} 
+0

감사합니다. – insict

+0

@ user1853125 기꺼이 도와 드리겠습니다. 이 답변으로 문제가 해결되었다고 생각하면 동의하십시오. –

+0

@ user1853125하지만 el은 여전히 ​​실행됩니다. 이 경우에는 재산을 갖게됩니다. 제목에서 당신은 엘이 주석을 달았습니까? – partlov

3

당신은 당신의 댓글을 달았습니다 코드를 보여주지 않았다,하지만 난 당신이

<!-- ... --> 

내가 말을해야 코멘트를 고전 XML을 사용 추측 :

는이 방식으로 기존 코드를 변경할 수 있습니다 그것은 기본적으로 EL이 주석에 있더라도 실행됩니다. 이 문제를 추가하여 전 세계적으로 EL 댓글에 해결을 비활성화 할 수 있습니다,

첫째 : 당신은이 문제에 대한 두 가지 솔루션 중 하나를 사용할 수 있습니다

<context-param> 
    <param-name>facelets.SKIP_COMMENTS</param-name> 
    <param-value>true</param-value> 
</context-param> 

당신의 web.xml 파일에.

다른 해결책은 ui:remove 태그에 주석을 묶는 것입니다.

+0

감사합니다. – insict