2014-07-09 3 views
0

JSF Primefaces로 작업하고 있는데 검색 결과를 보여주고 싶지만 결과가 표시되지 않습니다. 결과 유형을 사용하여이를 수행하고 JSF 2.1에서 구현했습니다. MyFaces tomahawk 하지만 지금이 작동하지 않는 primefaces와, 여기에 내 코드데이터 테이블 Primefaces

<h:form id="buscar_sucursal"> 
     <p:panel style="width: 800px"> 
      <h:panelGrid columns="5"> 
       <h:outputText value="Criterio: " /> 
       <p:selectOneMenu id="citerio" value="#{SucursalesBean.criterio}"> 
        <f:selectItem itemValue="1" itemLabel="CVE SUCURSAL"></f:selectItem> 
        <f:selectItem itemValue="2" itemLabel="NOMBRE"></f:selectItem> 
       </p:selectOneMenu> 
       <h:outputText value="Valor: " /> 
       <p:inputText id="valor" value="#{SucursalesBean.valor}"></p:inputText> 
       <p:commandButton action="#{SucursalesBean.buscar}" value="Buscar"></p:commandButton> 
      </h:panelGrid> 
     </p:panel> 
     <p:dataTable id="sucursalesTable" var="suc" value="#{SucursalesBean.sucursalesTable}"> 
      <p:column headerText="Id"> 
       <h:outputText value=""></h:outputText> 
      </p:column> 
      <p:column headerText="Cve"> 
       <h:outputText value="#{suc.cve_sucursal}"></h:outputText> 
      </p:column> 
      <p:column headerText="Sucursal"> 
       <h:outputText value="#{suc.sucursal}"></h:outputText> 
      </p:column> 
      <p:column headerText="Domicilio"> 
      </p:column> 
      <p:column headerText="Contraseña"> 
      </p:column> 
      <p:column headerText="Accion"> 
       <h:commandLink value="Editar"></h:commandLink>/
       <h:commandLink value="Eliminar"></h:commandLink> 
      </p:column> 
     </p:dataTable> 
    </h:form> 

과의 코드 내 ManagedBean은 내가 목록 유형을 사용하기 위해 직렬화 된 객체를 사용하지 않으

public Result getSucursalesTable() 
{ 
    return this.sucursalesTable; 
} 
public void setSucursalesTable(Result sucursalesTable) 
{ 
    this.sucursalesTable = sucursalesTable; 
} 
public void buscar() throws ClassNotFoundException 
{ 
    HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
    this.valor = request.getParameter("buscar_sucursal:valor"); 

    try 
    { 
     LoginBean loginBean = (LoginBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("LoginBean"); 
     Connection conn = loginBean.getConectar_db(); 
     //int id_empresa = loginBean.getId_empresa(); 
     ArrayList<SucursalesBean> al = new ArrayList<SucursalesBean>(); 
     st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
     ResultSet rs = null; 
     //ResultSet rs = st.executeQuery("SELECT *FROM clientes WHERE id_cliente='"+request.getParameter("id_cliente")+"';"); // AND id_contribuyente='' AND id_empresa='' 
     //if(request.getParameter("sucursales:id_sucursal") != null) 
      //rs = st.executeQuery("SELECT *FROM sucursales WHERE id_sucursal='"+request.getParameter("sucursales:id_sucursal")+"' AND id_empresa='"+loginBean.getId_empresa()+"' AND id_contribuyente='"+loginBean.getId_contribuyente()+"';"); // AND id_contribuyente='' AND id_empresa='' 
     if(getCriterio().toString() != null) 
     { 
      if(getCriterio().toString().equals("1")) 
       rs = st.executeQuery("SELECT cve_sucursal,sucursal FROM sucursales WHERE cve_sucursal='"+this.valor+"' AND id_empresa='"+loginBean.getId_empresa()+"' AND id_contribuyente='"+loginBean.getId_contribuyente()+"';"); 
      if(getCriterio().toString().equals("2")) 
       rs = st.executeQuery("SELECT *FROM sucursales WHERE sucursal LIKE '%"+this.valor+"%' AND id_empresa='"+loginBean.getId_empresa()+"' AND id_contribuyente='"+loginBean.getId_contribuyente()+"';"); 
     } 
     this.sucursalesTable = ResultSupport.toResult(rs); 
     //this.sucursalesTable = rs; 
     //setSucursalesTable(ResultSupport.toResult(rs)); 

     /*while(rs.next()) 
     { 
      //out.println("<tr><td>"+rs.getString("sucursal")+"</td><td>"+rs.getString("cve_sucursal")+"</td><td>"+rs.getString("telefono")+"</td><td>"+rs.getString("e_mail")+"</td><td>"+rs.getString("calle")+"</td><td><a href='sucursales.jsp?accion=editar&id_sucursal="+rs.getString("id_sucursal")+"'>Editar</a></td><td></td></tr>"); 
      //setId_sucursal(String.valueOf(rs.getInt("id_sucursal"))); 
      setCve_sucursal(rs.getString("cve_sucursal")); 
      setSucursal(rs.getString("sucursal")); 
      al.add(this); 
     } 
     this.sucursalesTable = al;*/ 
    } 
    catch(SQLException ex) 
    { 
    } 

} 

왜냐하면 이것은 단순하지 않다고 생각되는 일을하기 위해 많은 코드를 작성해야한다고 생각하기 때문입니다. 최선의 방법.

Primefaces가 Result 타입을 지원하는지 의심 스럽다. 그렇지 않으면이 aproach가 작동하지 않는 이유 일 것이다.

정말 감사 어떤 도움을 당신이 시간을 변환 한 그것은 나에게 보이는 사전

답변

0

에 감사 : 명령 단추를 페이지로 : 명령 단추를. 첫 번째는 기본적으로 비 아약스 요청을 사용하지만 후자는 아약스 요청을 사용합니다. 나는 나의 질문에 대답하기위한

<p:commandButton action="#{SucursalesBean.buscar}" 
       value="Buscar" 
       ajax="false" /> 
+0

안녕하세요 감사 :

<p:commandButton action="#{SucursalesBean.buscar}" value="Buscar" process="criterio valor" update="sucursalesTable" /> 

또는 비 아약스 요청을 사용합니다, 당신은 단지 버튼을 알려줄 필요가 올바른 경우 구성 요소를 요청 후시 및 업데이트 처리하는 'ajax = "false"로 시도했는데 기본적으로 true로 설정되어 있습니다. 요청 후 페이지가 새로 고쳐지고 다음 오류가 표시됩니다. – user2206592

+0

/sucursales.xhtml @ 71,63 value = "# {suc.cve_sucursal}" : Propiedad 'cve_sucursal'no hallada en el tipo javax.servlet.jsp.jstl.sql.ResultImpl – user2206592

+0

SucursalesBean.sucursalesTable이 Result 유형의 Result 인 것으로 보입니다. 데이터 테이블은 콜렉션의 내용 만 보여줄 수 있다고 믿습니다. 그래서 당신을 위해 가장 쉬운 게 뭔지 모르겠지만, 여기에 같은 쿼리의 결과를 포함하는 DTO 클래스가 필요하다고 생각합니다 : http://stackoverflow.com/questions/8597382/how-to-show-hibernate-query -result-in-primefaces-datatable –

관련 문제