[JSF] F:Param - Atualizando a página para poder funcionar

5 respostas
F

Estou tendo dificuldades de “acertar a mão” com os parâmetros em JSF. Gostaria de poder contar com a ajuda dos amigos:

Numa página JSF estou setando os seguintes parâmetros conforme abaixo:

<h:commandLink action="consMovVend">
                                                <f:param name="mes" value="#{movVendBean.mes}"/> 
                                                <f:param name="ano" value="#{movVendBean.ano}"/> 
                                                <f:param name="usuario" value="#{usuario.usuCod}"/> 
                                                <h:graphicImage value="/mti.gif" style="border: 0px"/>
                                            </h:commandLink>

Meu Bean está assim:

<managed-bean>
    <managed-bean-name>usuario</managed-bean-name>
    <managed-bean-class>com.mti.bean.Usuario</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>movVendBean</managed-bean-name>
    <managed-bean-class>com.mti.bean.MovVend</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>

Usuario e MovVend contém apenas seus respectivos getters e setters

Quando clico na imagem contida no h:CommandLink sou direcionado para uma página contendo uma h:dataTable:

<h:dataTable styleClass="tabela" headerClass="cabecalho" columnClasses="ultimo,primeiro" value="#{movVend.listaMovVend}" var="mov">
                                    <h:column><f:facet name="header"><h:outputText value="Produto:" /></f:facet>
                                    <h:outputText value="#{mov.prodCod}"/></h:column>
                                    <h:column><f:facet name="header"><h:outputText value="AA:" /></f:facet>
                                    <h:outputText value="#{mov.movVendRealAA}"/></h:column>
                                    <h:column><f:facet name="header"><h:outputText value="MA:" /></f:facet>
                                    <h:outputText value="#{mov.movVendRealMA}"/></h:column>
                                    <h:column><f:facet name="header"><h:outputText value="Meta:" /></f:facet>
                                    <h:outputText value="#{mov.movVendMeta}"/></h:column>
                                    <h:column><f:facet name="header"><h:outputText value="Real:" /></f:facet>
                                    <h:outputText value="#{mov.movVendReal}"/></h:column>
                                    <h:column><f:facet name="header"><h:outputText value="% Real:" /></f:facet>
                                    <h:outputText value="#{mov.movVendPercReal}"/></h:column>
                        </h:dataTable></div></td>

Abaixo está a classe DAO da qual provêm os dados da dataTable:

public MovVend[] getListaMovVend () throws ClassNotFoundException{
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs = null;
        ArrayList al = null;
        MovVend dados = new MovVend();
        String mesAno =FacesUtil.getRequestParameter("ano")+FacesUtil.getRequestParameter("mes");
        String usuCod =FacesUtil.getRequestParameter("usuario");
       
        String sqlConsMovVend = "SELECT MovVend.ProdCod, MovVendRealAA, MovVendRealMA, MovVendMeta, MovVendReal, MovVendPercReal FROM MovVend, Produto WHERE Produto.ProdCod=MovVend.ProdCod AND MovVendMesAno='"+mesAno+"' AND UsuCod='"+usuCod+"'ORDER BY MovVend.ProdCod";
       
        try {
          	Class.forName(driver);
                conn = DriverManager.getConnection(url,user,password);
                ps = conn.prepareStatement(sqlConsMovVend);
               	rs = ps.executeQuery();
                al = new ArrayList();
                
		while (rs.next()){
                    dados = new MovVend();
                    dados.setProdCod(rs.getString(1));
                    dados.setMovVendRealAA(rs.getString(2));
                    dados.setMovVendRealMA(rs.getFloat(3));
                    dados.setMovVendMeta(rs.getFloat(4));
                    dados.setMovVendReal(rs.getFloat(5));
                    dados.setMovVendPercReal(rs.getFloat(6));
                    al.add(dados);
		}
                
        	conn.close();
		rs.close();
		ps.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } 
      
	MovVend movVendAux[] = (MovVend[])al.toArray(new MovVend[al.size()]);
	return(movVendAux);
    }

e a classe FacesUtil abaixo:

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

public class FacesUtil {

    // Getters -----------------------------------------------------------------------------------

    public static String getRequestParameter(String name) {
        return (String) FacesContext.getCurrentInstance().getExternalContext()
            .getRequestParameterMap().get(name);
    }
    
        public static String getActionAttribute(ActionEvent event, String name) {
        return (String) event.getComponent().getAttributes().get(name);
    }

}

Agora é que é o problema. Minha dúvida está no seguinte: Quando clico pela primeira vez no link do h:commandLink, sou redirecionado para a página que contém a dataTable, porém os dados não são exibidos. Clicando no botão voltar do Browser, apertando o F5 (atualizar) e novamente ao clicar no commandLink aí a dataTable é exibida perfeitamente.

Poderiam me ajudar dizendo o que estou errando? Vale lembrar que sou iniciante, fiz tudo isso aí funcionar não sei bem como (rsrsrs)

Desde já agradeço!

Abraços

Marco Aurélio

5 Respostas

L

A resposta é simples: não use f:param! JSF não é um action-based framework, onde pra invocar uma ação deve-se passar parâmetros, se fizer isso no JSF, vc tá lascado.

Repare que os parâmetros de f:param são valores de managed beans. Por isso, basta apenas que o seu managed bean “DAO” (que não é DAO porcaria nenhuma) acesse os valores diretamentente de outros beans, sem passar a utilizar coisas como request param.

F

Leonardo;
Obrigado pela resposta! Mas ainda estou com dúvida (sou iniciante)!

Poderia exemplificar como minha classe DAO (que não é DAO) poderia pegar o valor que está no Bean MovVend?

Como faço para que meu método getListaMovVend obtenha esses valores?

public MovVend[] getListaMovVend () throws ClassNotFoundException{
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs = null;
    ArrayList al = null;
    MovVend dados = new MovVend();
    String [b]mesAno [/b]=FacesUtil.getRequestParameter("ano")+FacesUtil.getRequestParameter("mes");
    String [b]usuCod [/b]=FacesUtil.getRequestParameter("usuario");
L

Deixa eu ver se entendi. Vc tem três managed beans, o movVend (que é o seu “DAO”), o movVendBean e o usuário, certo?

Se for isso, basta colocar getters e setters na classe “DAO”, tipo: setUsuario, getUsuario, setMovVendBean e getMovVendBean.

Com isso, basta declarar o movVend no faces-config.xml e dizer que vai receber duas propriedades:

<managed-bean>
    <managed-bean-name>usuario</managed-bean-name>
    <managed-bean-class>com.mti.bean.Usuario</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>movVendBean</managed-bean-name>
    <managed-bean-class>com.mti.bean.MovVend</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>movVend</managed-bean-name>
    <managed-bean-class>(não sei qual classe é seu DAO, mas ponha nesse lugar)</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>usuario</property-name>
      <value>#{usuario}</value>
    </managed-property>
    <managed-property>
      <property-name>movVendBean</property-name>
      <value>#{movVendBean}</value>
    </managed-property>
  </managed-bean>

E aí é só pegar as propriedades do bean “DAO”.

felipeguerra

Leonardo,

Vc sabe se o JSF tem problemas com campos do tipo boolean?

Esclarecendo, tenho um List de VOs que são exibidos numa página, seu eu tento usar o <h:outputText> com uma propriedade do tipo boolean ele da uma exceção:

SEVERE: Servlet.service() for servlet Faces Servlet threw exception
org.apache.jasper.el.JspPropertyNotFoundException: /jsf/adm/controle_usuario.jsp(126,11) '#{users.flagAtivo}' Property 'flagAtivo' not readable on type boolean
	at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:849)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:242)
	at com.sun.faces.renderkit.html_basic.TableRenderer.renderRow(TableRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:133)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:825)
	at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:282)
	at org.ajax4jsf.framework.renderer.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:159)
	at org.ajax4jsf.framework.renderer.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:97)
	at org.ajax4jsf.framework.renderer.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:150)
	at org.ajax4jsf.framework.renderer.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:97)
	at org.ajax4jsf.framework.renderer.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:150)
	at org.ajax4jsf.framework.renderer.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:125)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:549)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot$4.invokeRoot(AjaxViewRoot.java:380)
	at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:53)
	at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:191)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:397)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
	at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:256)
	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:187)
	at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:233)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.sofisa.pcfi.filter.ControlFilter.doFilter(ControlFilter.java:34)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:595)
F

Olá Leonardo;
Mais uma vez, muitíssimo obrigado!

Vamos lá:

meu faces config, depois de alterá-lo conforme me orientou:

&lt;faces-config xmlns="http://java.sun.com/JSF/Configuration"&gt;
    &lt;managed-bean&gt;
        &lt;managed-bean-name&gt;usuario&lt;/managed-bean-name&gt;
        &lt;managed-bean-class&gt;com.mti.bean.Usuario&lt;/managed-bean-class&gt;
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
    &lt;/managed-bean&gt;
    &lt;managed-bean&gt;
        &lt;managed-bean-name&gt;verUser&lt;/managed-bean-name&gt;
        &lt;managed-bean-class&gt;com.mti.bean.DAO&lt;/managed-bean-class&gt;
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
    &lt;/managed-bean&gt;
    &lt;managed-bean&gt;
        &lt;managed-bean-name&gt;movVend&lt;/managed-bean-name&gt;
        &lt;managed-bean-class&gt;com.mti.bean.DAO&lt;/managed-bean-class&gt;
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
    &lt;/managed-bean&gt;
    &lt;managed-bean&gt;
        &lt;managed-bean-name&gt;movVendBean&lt;/managed-bean-name&gt;
        &lt;managed-bean-class&gt;com.mti.bean.MovVend&lt;/managed-bean-class&gt;
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
    &lt;/managed-bean&gt;
    &lt;managed-property&gt;   
        &lt;property-name&gt;usuario&lt;/property-name&gt;   
        &lt;value&gt;#{usuario}&lt;/value&gt;   
    &lt;/managed-property&gt;   
    &lt;managed-property&gt;   
        &lt;property-name&gt;movVendBean&lt;/property-name&gt;   
        &lt;value&gt;#{movVendBean}&lt;/value&gt;   
    &lt;/managed-property&gt;   
    &lt;navigation-rule&gt;
        &lt;navigation-case&gt;
            &lt;from-outcome&gt;loginOK&lt;/from-outcome&gt;
            &lt;to-view-id&gt;/welcomeLogin.jsp&lt;/to-view-id&gt;
        &lt;/navigation-case&gt;
    &lt;/navigation-rule&gt;
    &lt;navigation-rule&gt;
        &lt;navigation-case&gt;
            &lt;from-outcome&gt;loginErro&lt;/from-outcome&gt;
            &lt;to-view-id&gt;/loginErro.jsp&lt;/to-view-id&gt;
        &lt;/navigation-case&gt;
    &lt;/navigation-rule&gt;
    &lt;navigation-rule&gt;
        &lt;navigation-case&gt;
            &lt;from-outcome&gt;consMovVend&lt;/from-outcome&gt;
            &lt;to-view-id&gt;/consMovVend.jsp&lt;/to-view-id&gt;
        &lt;/navigation-case&gt;
    &lt;/navigation-rule&gt;
&lt;/faces-config&gt;

Na verdade alterei sem entender bem o porque. Tenho o seguinte cenário, onde:

MovVend: possui os getters e setters apenas

package com.mti.bean;
import com.mti.bean.*;
/**
 *
 * @author administrador
 */
public class MovVend {
    
    /** Creates a new instance of ConsMovVend */
    public MovVend() {
    }

    /**
     * Mantém o valor da propriedade mes.
     */
    private String mes;

    /**
     * "Getter" para a propriedade mes.
     * @return Valor para a propriedade mes.
     */
    public String getMes() {
        return this.mes;
    }

    /**
     * "Setter" para a propriedade mes.
     * @param mes Novo valor para a propriedade mes.
     */
    public void setMes(String mes) {
        this.mes = mes;
    }

    /**
     * Mantém o valor da propriedade ano.
     */
    private String ano;

    /**
     * "Getter" para a propriedade ano.
     * @return Valor para a propriedade ano.
     */
    public String getAno() {
        return this.ano;
    }

    /**
     * "Setter" para a propriedade ano.
     * @param ano Novo valor para a propriedade ano.
     */
    public void setAno(String ano) {
        this.ano = ano;
    }

    /**
     * Mantém o valor da propriedade prodCod.
     */
    private String prodCod;

    /**
     * "Getter" para a propriedade prodCod.
     * @return Valor para a propriedade prodCod.
     */
    public String getProdCod() {
        return this.prodCod;
    }

    /**
     * "Setter" para a propriedade prodCod.
     * @param prodCod Novo valor para a propriedade prodCod.
     */
    public void setProdCod(String prodCod) {
        this.prodCod = prodCod;
    }

    /**
     * Mantém o valor da propriedade usuCod.
     */
    private String usuCod;

    /**
     * "Getter" para a propriedade usuCod.
     * @return Valor para a propriedade usuCod.
     */
    public String getUsuCod() {
        return this.usuCod;
    }

    /**
     * "Setter" para a propriedade usuCod.
     * @param usuCod Novo valor para a propriedade usuCod.
     */
    public void setUsuCod(String usuCod) {
        this.usuCod = usuCod;
    }

    /**
     * Mantém o valor da propriedade movVendMeta.
     */
    private float movVendMeta;

    /**
     * "Getter" para a propriedade movVendMeta.
     * @return Valor para a propriedade movVendMeta.
     */
    public float getMovVendMeta() {
        return this.movVendMeta;
    }

    /**
     * "Setter" para a propriedade movVendMeta.
     * @param movVendMeta Novo valor para a propriedade movVendMeta.
     */
    public void setMovVendMeta(float movVendMeta) {
        this.movVendMeta = movVendMeta;
    }

    /**
     * Mantém o valor da propriedade movVendReal.
     */
    private float movVendReal;

    /**
     * "Getter" para a propriedade movVendReal.
     * @return Valor para a propriedade movVendReal.
     */
    public float getMovVendReal() {
        return this.movVendReal;
    }

    /**
     * "Setter" para a propriedade movVendReal.
     * @param movVendReal Novo valor para a propriedade movVendReal.
     */
    public void setMovVendReal(float movVendReal) {
        this.movVendReal = movVendReal;
    }

    /**
     * Mantém o valor da propriedade movVendPercReal.
     */
    private float movVendPercReal;

    /**
     * "Getter" para a propriedade movVendPercReal.
     * @return Valor para a propriedade movVendPercReal.
     */
    public float getMovVendPercReal() {
        return this.movVendPercReal;
    }

    /**
     * "Setter" para a propriedade movVendPercReal.
     * @param movVendPercReal Novo valor para a propriedade movVendPercReal.
     */
    public void setMovVendPercReal(float movVendPercReal) {
        this.movVendPercReal = movVendPercReal;
    }

    /**
     * Mantém o valor da propriedade movVendRealMA.
     */
    private float movVendRealMA;

    /**
     * "Getter" para a propriedade movVendRealMa.
     * @return Valor para a propriedade movVendRealMa.
     */
    public float getMovVendRealMA() {
        return this.movVendRealMA;
    }

    /**
     * "Setter" para a propriedade movVendRealMa.
     * @param movVendRealMa Novo valor para a propriedade movVendRealMa.
     */
    public void setMovVendRealMA(float movVendRealMA) {
        this.movVendRealMA = movVendRealMA;
    }

    /**
     * Mantém o valor da propriedade movVendRealAA.
     */
    private String movVendRealAA;

    /**
     * "Getter" para a propriedade movVendRealAA.
     * @return Valor para a propriedade movVendRealAA.
     */
    public java.lang.String getMovVendRealAA() {
        return this.movVendRealAA;
    }

    /**
     * "Setter" para a propriedade movVendRealAA.
     * @param movVendRealAA Novo valor para a propriedade movVendRealAA.
     */
    public void setMovVendRealAA(java.lang.String movVendRealAA) {
        this.movVendRealAA = movVendRealAA;
    }
    
}

Usuário: possui os getters e setters e mais um método (verUser) para checar se o usuário é válido:

package com.mti.bean;
import com.mti.bean.*;

/**
 *
 * @author administrador
 */
public class Usuario {
    
    /** Creates a new instance of Usuario */
    public Usuario() {
    }

    
    private String usuLogin;

    /**
     * "Getter" para a propriedade usuLogin.
     * @return Valor para a propriedade usuLogin.
     */
    public String getUsuLogin() {
        return this.usuLogin;
    }

    /**
     * "Setter" para a propriedade usuLogin.
     * @param usuLogin Novo valor para a propriedade usuLogin.
     */
    public void setUsuLogin(String usuLogin) {
        this.usuLogin = usuLogin;
    }    
    
    /**
     * Mantém o valor da propriedade usuCod.
     */
   
    private String usuCod;

    /**
     * "Getter" para a propriedade usuCod.
     * @return Valor para a propriedade usuCod.
     */
    public String getUsuCod() {
        return this.usuCod;
    }

    /**
     * "Setter" para a propriedade usuCod.
     * @param usuCod Novo valor para a propriedade usuCod.
     */
    public void setUsuCod(String usuCod) {
        this.usuCod = usuCod;
    }

    /**
     * Mantém o valor da propriedade usuNome.
     */
    private String usuNome;

    /**
     * "Getter" para a propriedade usuNome.
     * @return Valor para a propriedade usuNome.
     */
    public String getUsuNome() {
        return this.usuNome;
    }

    /**
     * "Setter" para a propriedade usuNome.
     * @param usuNome Novo valor para a propriedade usuNome.
     */
    public void setUsuNome(String usuNome) {
        this.usuNome = usuNome;
    }

    /**
     * Mantém o valor da propriedade usuSenha.
     */
    private String usuSenha;

    /**
     * "Getter" para a propriedade usuSenha.
     * @return Valor para a propriedade usuSenha.
     */
    public String getUsuSenha() {
        return this.usuSenha;
    }

    /**
     * "Setter" para a propriedade usuSenha.
     * @param usuSenha Novo valor para a propriedade usuSenha.
     */
    public void setUsuSenha(String usuSenha) {
        this.usuSenha = usuSenha;
    }
    
    private String usuOK;
    
    public String verUser() {
      DAO verifica=new DAO();
      verifica.VerUsuario(this.getUsuLogin(),this.getUsuSenha());
      this.setUsuNome(verifica.usuNome);
      this.setUsuCod(verifica.usuCod);
      return verifica.loginOk;
    }
}

Nesta classe acima, uso uma outra classe Java para me conectar com o banco e fazer a consulta, chamo essa classe de DAO (depois se puder me explica pq não é DAO, para eu aprender mesmo), segue abaixo:

package com.mti.bean;
import com.mti.bean.Usuario;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.faces.component.UIParameter;

import javax.faces.event.ActionEvent;
import com.mti.util.FacesUtil;


/**
 *
 * @author administrador
 */
public class DAO {
    public String loginOk;
    public String usuNome="";
    public String usuCod="";
    public String vMes="";
    public String vAno="";

    static final String url = "jdbc:oracle:thin:@192.100.10.X:1521:XX";
    static final String driver = "oracle.jdbc.driver.OracleDriver";
    static final String user = "xxxxxx";
    static final String password = "xxxxx";
    
    /** Creates a new instance of VerificaUsuario */
    public String VerUsuario(String usuLogin, String usuSenha){
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs = null;
        loginOk = "loginErro";
        
        try {
            Class.forName(driver);
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }
        
        String sqlVerificaUser = "SELECT UsuCod, UsuNome, UsuLogin, UsuSenha FROM Usuario WHERE UsuStatus = 'A' AND UsuLogin ='"+usuLogin+"' AND UsuSenha ='"+usuSenha+"'";
        
        try {
          	conn = DriverManager.getConnection(url,user,password);
                ps = conn.prepareStatement(sqlVerificaUser);
               	rs = ps.executeQuery();
		while (rs.next()){
                        usuCod=(rs.getString(1)); 
                        usuNome=(rs.getString(2)); 
			loginOk="loginOK";
		}
                
        	conn.close();
		rs.close();
		ps.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } 
      
        return loginOk;
    }
    
    public MovVend[] getListaMovVend () throws ClassNotFoundException{
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs = null;
        ArrayList al = null;
        MovVend dados = new MovVend();
        String mesAno =FacesUtil.getRequestParameter("ano")+FacesUtil.getRequestParameter("mes");
        String usuCod =FacesUtil.getRequestParameter("usuario");
       
        String sqlConsMovVend = "SELECT MovVend.ProdCod, MovVendRealAA, MovVendRealMA, MovVendMeta, MovVendReal, MovVendPercReal FROM MovVend, Produto WHERE Produto.ProdCod=MovVend.ProdCod AND MovVendMesAno='"+mesAno+"' AND UsuCod='"+usuCod+"'ORDER BY MovVend.ProdCod";
       
        //System.out.println("VARIAVEL É"+mesAno);
        
        try {
          	Class.forName(driver);
                conn = DriverManager.getConnection(url,user,password);
                ps = conn.prepareStatement(sqlConsMovVend);
               	rs = ps.executeQuery();
                al = new ArrayList();
                
		while (rs.next()){
                    dados = new MovVend();
                    dados.setProdCod(rs.getString(1));
                    dados.setMovVendRealAA(rs.getString(2));
                    dados.setMovVendRealMA(rs.getFloat(3));
                    dados.setMovVendMeta(rs.getFloat(4));
                    dados.setMovVendReal(rs.getFloat(5));
                    dados.setMovVendPercReal(rs.getFloat(6));
                    al.add(dados);
		}
                
        	conn.close();
		rs.close();
		ps.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } 
      
	MovVend movVendAux[] = (MovVend[])al.toArray(new MovVend[al.size()]);
	return(movVendAux);
    }
}

Então, nesta classe DAO, no método MovVend eu tenho que passar para a query o nome do usuário (usuCod) e o período para a pesquisa (mesAno). Estava tentando pegar dos f:param. Mas como você me aconselhou, devo fazer diferente, até entendi que devo colocar os getters e setters da classe MovVend, mas não sei como. Deu nó na cachola! Os getters e setters da MovVend pertencem a outra classe e não a classe DAO. Deve ser princípio básico, mas desculpe-me pela ignorância, estou apenas começando e conto muito com sua ajuda e dos colegas do GUJ!

Abração

Marco A.

Criado 26 de dezembro de 2007
Ultima resposta 26 de dez. de 2007
Respostas 5
Participantes 3