Duvidas de JSF

Prezados colegas
Estou estudando JSF e estou convertendo um pequeno aplicativo de struts para JSF.
É um aplicativo de controle de despesas á minha duvida é em pagina onde tenho uma grid e em cada linha da grid tenho um link para editar e excluir.

As duvidas são as seguinte :

1.NO METODO EDITAR COMO PASSAR A DESPESA A SER EDITADA?

No struts

<td><bean:message key=“prompt.Editar”/></td>>

No JSF ?

<h:column>
<f:facet name=“header”>
<h:outputText value="#{msg[‘prompt.Editar’]}"/>
</f:facet>
<h:commandButton action="#{tipoDespesaBean.editar}" value="#{msg[‘prompt.Editar’]}"/>
</h:column>

2.NO METODO EXCLUIR COMO EXECUTAR O JAVASCRIPT E PASSAR O CODIGO DA DESPESA ?
No Struts

<td><bean:message
key=“prompt.Excluir”/>
</td>>

No jsf ?

<h:column>
<f:facet name=“header”>
<h:outputText value="#{msg[‘prompt.Excluir’]}"/>
</f:facet>
<h:commandButton action="#{tipoDespesaBean.editar}" value="#{msg[‘prompt.Excluir’]}"/>
</h:column>

1-despesa.jsp
<f:view>
<html>
<head>
<title><h:outputText value="#{msg[‘prompt.Titulo’]}"/></title>
</head>
<body>
<h:form>
<div align=“center”>
<div id=“body”>

            &lt;h1&gt;&lt;h:outputText value="#{msg['prompt.TituloLisTipoDespesa']}"/&gt;&lt;/h1&gt;
          
            &lt;h:dataTable id="estadosTable" value="#{tipoDespesaBean.tipoDespesas}" var="tipoDespesa"
			border="1" cellspacing="0" cellpadding="86" rows="5"
			styleClass="html-table"&gt;
               &lt;h:column&gt;
		&lt;f:facet name="header"&gt;
		    &lt;h:outputText value="#{msg['prompt.Codigo']}"/&gt;
		&lt;/f:facet&gt;
		&lt;h:outputText value="#{tipoDespesa.cdTipoDespesa}" /&gt;
	    &lt;/h:column&gt; 
                &lt;h:column&gt;
		&lt;f:facet name="header"&gt;
		    &lt;h:outputText value="#{msg['prompt.TipoDespesa']}"/&gt;
		&lt;/f:facet&gt;
		&lt;h:outputText value="#{tipoDespesa.dsTipoDespesa}" /&gt;
	    &lt;/h:column&gt;   
                &lt;h:column&gt;
		&lt;f:facet name="header"&gt;
		    &lt;h:outputText value="#{msg['prompt.Observacao']}"/&gt;
		&lt;/f:facet&gt;
		&lt;h:outputText value="#{tipoDespesa.dsObservacao}" /&gt;
	    &lt;/h:column&gt;                
                 &lt;h:column&gt;
		&lt;f:facet name="header"&gt;
		   &lt;h:outputText value="#{msg['prompt.Editar']}"/&gt;            
		&lt;/f:facet&gt;
		&lt;h:commandButton action="#{tipoDespesaBean.editar}" value="#{msg['prompt.Editar']}"/&gt;
                 &lt;/h:column&gt;
                 &lt;h:column&gt;
		&lt;f:facet name="header"&gt;
		   &lt;h:outputText value="#{msg['prompt.Excluir']}"/&gt;            
		&lt;/f:facet&gt;
	        &lt;h:commandButton action="#{tipoDespesaBean.editar}" value="#{msg['prompt.Excluir']}"/&gt;
	     &lt;/h:column&gt;
            &lt;/h:dataTable&gt;                
         &lt;div align="center"&gt;
                <p>&nbsp;</p>
                &lt;h:commandLink action="cadtipodespesa" value="#{msg['prompt.CadNovoTipoDespesa']}" /&gt;
                &lt;h:commandLink action="principal" value="#{msg['prompt.TelaPrincipal']}" /&gt;
         &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;  
  &lt;/h:form&gt;  
&lt;/body&gt;

</html>
</f:view>

2-DespesaBean.java

public class DespesaBean {

/**
 * Referencia para a camada de regras de negocio.
 */
private DespesaBusiness despesaBusiness;

/**
 * Usuario a serusado no form.
 */
private Despesa despesa  = new Despesa();

/**
 * Parametro de filtro.
 */
private String filtro;

/**
 * Armazena o usuario logado apos a autenticacao.
 */
public DespesaBusiness getDespesaBusiness() {
	return despesaBusiness;
}

public void setDespesaBusiness(DespesaBusiness despesaBusiness) {
	this.despesaBusiness= despesaBusiness;
}

public Despesa getDespesa() {
	return despesa;
}

public void setDespesa(Despesa despesa) {
	this.despesa = despesa;
}

 public List listar(){
    List lista = despesaBusiness.listar();
 return lista;
}
public void excluir(int  cdDespesa){
    despesaBusiness.excluir(cdDespesa);
return;    

}
public void editar(Despesa despesa){
despesaBusiness.editar(despesa);
return;
}
public String cadastrar() {
try {
despesaBusiness.salvar(despesa);
return “listardespesa”;
} catch (Exception e) {
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setDetail(“Despesa inválida!”);
FacesContext.getCurrentInstance().addMessage(“DespesaForm”, message);
return null;
}
}
}