jmmo
Abril 23, 2008, 6:02am
#1
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
</a >
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
</a >
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>
<h1><h:outputText value="#{msg['prompt.TituloLisTipoDespesa']}"/></h1>
<h:dataTable id="estadosTable" value="#{tipoDespesaBean.tipoDespesas}" var="tipoDespesa"
border="1" cellspacing="0" cellpadding="86" rows="5"
styleClass="html-table">
<h:column>
<f:facet name="header">
<h:outputText value="#{msg['prompt.Codigo']}"/>
</f:facet>
<h:outputText value="#{tipoDespesa.cdTipoDespesa}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msg['prompt.TipoDespesa']}"/>
</f:facet>
<h:outputText value="#{tipoDespesa.dsTipoDespesa}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msg['prompt.Observacao']}"/>
</f:facet>
<h:outputText value="#{tipoDespesa.dsObservacao}" />
</h:column>
<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>
<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>
</h:dataTable>
<div align="center">
<p> </p>
<h:commandLink action="cadtipodespesa" value="#{msg['prompt.CadNovoTipoDespesa']}" />
<h:commandLink action="principal" value="#{msg['prompt.TelaPrincipal']}" />
</div>
</div>
</div>
</h:form>
</body>
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;
}
}
}
lgweb
Abril 23, 2008, 6:33am
#2
Ola bom dia,eu tenho uma tabela ± com as funcionalidades que vc descreveu,mas utilizo um DataModel para capturar a linha a ser excluida veja:
Minha tabela completa.
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css"href='<%= request.getContextPath() + "/css/tabelas.css" %>'>
</head>
<body>
<f:view>
<h:form>
<c:import url="/topo.jsp"></c:import>
<center>
<rich:datascroller align="center" for="tbusuario" maxPages="20" style=" width : 900px;" />
<rich:dataTable
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0" rows="5"
width="700" border="0" var="user" value="#{usuario.model}" id="tbusuario" style=" width : 736px;">
<f:facet name="header">
<rich:columnGroup>
<rich:column rowspan="2">
<h:outputText value="#{msg.acoes}"></h:outputText>
<rich:separator height="12" styleClass="tooltip"></rich:separator>
<h:commandLink action="#{usuario.novo}" immediate="true" id="novo">
<h:graphicImage value="/images/BOTOES/novo1.png" width="20" height="20">
</h:graphicImage></h:commandLink>
<rich:spacer width="13"></rich:spacer>
<h:commandLink action="#{usuario.getTodos}" immediate="true" id="atualizar">
<h:graphicImage value="/images/BOTOES/Restart.png" width="20" height="20">
</h:graphicImage>
</h:commandLink>
</rich:column>
<rich:column colspan="5">
<h:outputText value="#{msg.usuario}" ></h:outputText>
</rich:column>
<rich:column breakBefore="true" >
<h:outputText value="#{msg.codigo}" />
</rich:column>
<rich:column>
<h:outputText value="#{msg.nome}" />
</rich:column>
<rich:column>
<h:outputText value="#{msg.sobrenome}" />
</rich:column>
<rich:column>
<h:outputText value="#{msg.setor}" />
</rich:column>
<rich:column>
<h:outputText value="#{msg.login}" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<center>
<h:commandLink action="#{usuario.novo}">
</h:commandLink>
<h:commandLink action="#{usuario.editar}" id="editar">
<h:graphicImage value="/images/BOTOES/edit.png" width="20" height="20">
</h:graphicImage>
</h:commandLink>
<rich:spacer width="13"/>
<h:commandLink action="#{usuario.excluir}" id="excluir">
<h:graphicImage value="/images/BOTOES/Trash2.png" width="20" height="20" >
</h:graphicImage>
</h:commandLink>
</center>
</rich:column>
<rich:column filterBy="#{user.usuarioid}" filterEvent="onkeyup">
<h:outputText value="#{user.usuarioid}"></h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{user.nome}"></h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{user.sobrenome}"></h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{user.setor}"></h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{user.login}"></h:outputText>
</rich:column>
</rich:dataTable>
</center>
<div id="novo">
<rich:toolTip for="novo"followMouse="true" direction="top-right"
showDelay="500" styleClass="tooltip">
<h:outputText value="#{msg.novo}"></h:outputText>
</rich:toolTip>
</div>
<div id="atualizar">
<rich:toolTip for="atualizar"followMouse="true" direction="top-right"
showDelay="500" styleClass="tooltip">
<h:outputText value="#{msg.atualizar}"></h:outputText>
</rich:toolTip>
</div>
<c:import url="/Statusbar.jsp"></c:import>
</h:form>
</f:view>
</body>
</html>
Aqui esta os metodos que capturam a linha corrente:
public Usuario getUsuarioFromEditOrDelete() {
Usuario usuario = (Usuario) model.getRowData();
return usuario;
}
public String editar() {
Usuario usuario = getUsuarioFromEditOrDelete();
setUsuario(usuario);
return "editarUsuario";
public String excluir() {
IDaoUsuario ldao = new DaoUsuario();
Usuario usuario = getUsuarioFromEditOrDelete();
ldao.excluir(usuario);
getTodos();
return "sucessoDeleteEstado";
}
Qdo clicko em editar ele chama uma pagina de edicao ja com o bean setado com o usuario referente a linha que eu selecionei.
espero que ajude,abraços.
Dá uma olhada nessa área do meu blog talvez ajude você: http://javawora.blogspot.com/search/label/JSF 8)
LgWeb,
Me diz uma coisa eu to implementado o filterBy no rich:column. So que quando eu faço isso não consigo pegar a linha correta do meu datatable. Quando clico na linha so pega a ultima linha do datatable, se eu tirar o filter consigo pegar a linha correta normalmente. Estou usando o Richfaces 3.2SR1, o que será que estou fazendo de errado?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page "
xmlns:ui="http://java.sun.com/jsf/facelets "
xmlns:h="http://java.sun.com/jsf/html "
xmlns:f="http://java.sun.com/jsf/core "
xmlns:a4j="http://richfaces.org/a4j "
xmlns:rich=“http://richfaces.org/rich ”>
<ui:composition template="/jsp/template.jspx">
<ui:define name="conteudo">
<a4j:form>
<table width="100%" align="right">
<tr id="lStatus">
<td colspan="2" align="right"><a4j:status id="commonstatus"
startText="PROCESSANDO ..." /></td>
</tr>
<tr id="lTitulo">
<td class="lTitulo" width="90%">
Assunto
</td>
<td align="right" width="10%"><h:outputLink style="float:right;"
value="javascript:Richfaces.showModalPanel('mpFormulario',{width:500, top:50})">
<h:graphicImage url="/imagens/icones/novo.png" border="0" />
<rich:toolTip>
<span style="white-space: nowrapcolor : #000;">
Novo Assunto. </span>
</rich:toolTip>
</h:outputLink></td>
</tr>
<tr id="lMensagens">
<td colspan="2"><rich:messages passedLabel="" layout="list">
<f:facet name="header">
<h:outputText value="Entered Data Status:"></h:outputText>
</f:facet>
<f:facet name="passedMarker">
<h:graphicImage value="" />
</f:facet>
<f:facet name="errorMarker">
<h:graphicImage value="/imagens/icones/cross.png" />
</f:facet>
</rich:messages></td>
</tr>
<tr id="lCorpo">
<td colspan="2">
<a4j:region>
<rich:dataTable styleClass="centralizar" width="400"
id="lstAssunto" style="margin: 0 right;" rows="10"
columnClasses="col" value="#{cadastroAssunto.todos}"
var="decorador">
<f:facet name="header">
<rich:columnGroup>
<rich:column width="1%">
<a4j:commandButton alt="Remover Todos" title="Remover Todos"
action="#{ cadastroAssunto.excluirTodos }"
image="/imagens/icones/cross.png"
reRender="lstAssunto, frmAssunto">
<rich:toolTip>
<span style="white-space: nowrapcolor : #000;">
Clicando aqui será possivel excluir todos os registros
marcados. </span>
</rich:toolTip>
</a4j:commandButton>
</rich:column>
<rich:column width="60%">
<h:outputText styleClass="headerText" value="Descrição" />
</rich:column>
<rich:column width="30%">
<h:outputText styleClass="headerText"
value="Setores que Utilizam este Assunto" />
</rich:column>
<rich:column width="9%">
<h:outputText styleClass="headerText" value="" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column style="text-align: center;">
<h:selectBooleanCheckbox value="#{ decorador.remover }">
<rich:toolTip>
<span style="white-space: nowrap;"> Marcando varios
será possivel a exclusão de varios registro de uma so vez.
Basta marcar o registro desejados e clicar no X vermelho. </span>
</rich:toolTip>
</h:selectBooleanCheckbox>
</rich:column>
<rich:column>
<h:outputText value="#{ decorador.object.descricao }" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:inputText value="#{cadastroAssunto.filtro.setor.descricao}"
id="txtFiltroSetor">
<a4j:support event="onkeyup" reRender="lstAssunto"
ignoreDupResponses="true" requestDelay="700"
focus="txtFiltroSetor" />
</h:inputText>
</f:facet>
<a4j:repeat value="#{decorador.object.setores}" var="setor">
<h:outputText value="#{setor.descricao}" />
<br />
</a4j:repeat>
</rich:column>
<rich:column style="text-align: center;">
<a4j:commandButton alt="Editar" title="Editar"
action="#{ cadastroAssunto.atualizar }"
image="/imagens/icones/edit.png" onclick="javascript:Richfaces.showModalPanel('mpFormulario',{width:500, top:50})"
reRender="lstAssunto, frmAssunto">
<rich:toolTip>
<span style="white-space: nowrap"> Clicando aqui este
registro será excluido. </span>
</rich:toolTip>
</a4j:commandButton>
<a4j:commandButton alt="Excluir" title="Excluir"
action="#{ cadastroAssunto.excluir }"
image="/imagens/icones/bin.png"
reRender="lstAssunto, frmAssunto">
<rich:toolTip>
<span style="white-space: nowrap"> Clicando aqui este
registro pode ser editado. </span>
</rich:toolTip>
</a4j:commandButton>
</rich:column>
</rich:dataTable>
<rich:spacer height="10" />
<rich:datascroller for="lstAssunto" maxPages="10" align="center" />
</a4j:region></td>
</tr>
</table>
</a4j:form>
<!-- Listagem -->
<rich:spacer />
<ui:include src="formulario.jspx" />
<ui:include src="novosetor.jspx" />
</ui:define>
</ui:composition>
</jsp:root>
lgweb
Maio 7, 2008, 1:38pm
#5