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가 작동하지 않는 이유 일 것이다.
정말 감사 어떤 도움을 당신이 시간을 변환 한 그것은 나에게 보이는 사전
안녕하세요 감사 :
또는 비 아약스 요청을 사용합니다, 당신은 단지 버튼을 알려줄 필요가 올바른 경우 구성 요소를 요청 후시 및 업데이트 처리하는 'ajax = "false"로 시도했는데 기본적으로 true로 설정되어 있습니다. 요청 후 페이지가 새로 고쳐지고 다음 오류가 표시됩니다. – user2206592
/sucursales.xhtml @ 71,63 value = "# {suc.cve_sucursal}" : Propiedad 'cve_sucursal'no hallada en el tipo javax.servlet.jsp.jstl.sql.ResultImpl – user2206592
SucursalesBean.sucursalesTable이 Result 유형의 Result 인 것으로 보입니다. 데이터 테이블은 콜렉션의 내용 만 보여줄 수 있다고 믿습니다. 그래서 당신을 위해 가장 쉬운 게 뭔지 모르겠지만, 여기에 같은 쿼리의 결과를 포함하는 DTO 클래스가 필요하다고 생각합니다 : http://stackoverflow.com/questions/8597382/how-to-show-hibernate-query -result-in-primefaces-datatable –