Bem,
por esse motivo eu tentei utilizar o t:saveState, justamente pq o scopo é Request, e com o saveState ele fica entre Request e Session.
Bem, n posso colocar como session no momento, pois vai mudar algumas coisas. Eu não sei porque mas, ao tentar utilizar o a4j:keepAlive ele da um erro muito estranho.
As duas soluções que eu mais vi pela internet foi utilizar o saveState e o keepAlive. Porem com o saveState não funciona. e o keepAlive da error.
neno
Novembro 16, 2010, 12:39pm
#22
o savestate que você utilizou é de qual tag?
como vc declarou ela?
<%@taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
..............................................
<t:saveState value="#{acaoBean}"/>
<t:saveState value="#{progprojBean }"/>
neno
Novembro 16, 2010, 1:12pm
#24
roberto.,
seu manageBean implementa Serializable?
Aqui estao os 2.
public class AcaoBean {
private Acao acao = new Acao();
private List<Acao> acaos = new ArrayList<Acao>();
private ProgProj progProj = new ProgProj();
private AcaoService acaoService = new AcaoService();
private ProgProjService progProjService = new ProgProjService();
private UsuariosService usuariosService = new UsuariosService();
private Metodos metodos = new Metodos();
public String incluir() {
try {
acaoService.incluir(acao);
acao = null;
Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return null;
}
public String alterar() {
try {
acaoService.alterar(acao);
acao = null;
Mensagem.addMsgSucesso("Alteração realizada com sucesso.");
return "listarAcao";
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
return null;
}
}
public String excluir() {
try {
acaoService.excluir(acao);
acao = null;
acaos = acaoService.obterTodos();
Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return null;
}
public List<Acao> getAcaos() {
System.out.println(this.progProj.getCodigo());
//acaos = acaoService.obterTodos();
try {
acaos = acaoService.obterAcoesPorProj(this.progProj.getCodigo());
} catch (NegocioException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return acaos;
}
public Acao getAcao() {
if (acao == null) {
acao = new Acao();
}
return acao;
}
public void setAcao(Acao acao) {
this.acao = acao;
}
// Projeto
public Long getcodprojeto() {
if (getAcao().getProjeto() != null) {
return getAcao().getProjeto().getCodigo();
}
return 0L;
}
public void setcodprojeto(Long Codprojeto) throws NegocioException {
ProgProj progProj = progProjService.obterPorCodigo(Codprojeto);
getAcao().setProjeto(progProj);
}
public List<SelectItem> getprojetos() throws NegocioException {
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(0L, "Selecione"));
for (ProgProj progProj : progProjService.obterTodos()) {
itens.add(new SelectItem(progProj.getCodigo(), metodos.retornaStr( progProj.getSetor().getNome()+" - "+ progProj.getProgprojStr()+" - "+ progProj.getSeq()+" - "+progProj.getNome(), 150)));
}
return itens;
}
// Usuário
public Long getcodusuario() {
if (getAcao().getUsuario() != null) {
return getAcao().getUsuario().getCodigo();
}
return 0L;
}
public void setcodusuario(Long Codusuario) throws NegocioException {
Usuarios usuarios = usuariosService.obterPorCodigo(Codusuario);
getAcao().setUsuario(usuarios);
}
public List<SelectItem> getusuarios() throws NegocioException {
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(0L, "Selecione"));
for (Usuarios usuarios : usuariosService.obterTodos()) {
itens.add(new SelectItem(usuarios.getCodigo(), usuarios.getNome()));
}
return itens;
}
public void setProgProj(ProgProj progProj) {
this.progProj = progProj;
}
public ProgProj getProgProj() {
return progProj;
}
public class ProgProjBean {
private ProgProj progProj = new ProgProj();
private List<ProgProj> progProjs;
private List<ProgProj> listaProjAgua = new ArrayList<ProgProj>();
private List<ProgProj> listaProjEsgoto = new ArrayList<ProgProj>();
private List<ProgProj> listaProjDrenagem = new ArrayList<ProgProj>();
private List<ProgProj> listaProjResiduos = new ArrayList<ProgProj>();
private ProgProjDAO progDao = new ProgProjDAO();
private ProgProjService progProjService = new ProgProjService();
private SetorService setorService = new SetorService();
private UsuariosService usuariosService = new UsuariosService();
UsuariosBean usuarioMBean = (UsuariosBean) FacesContextComum
.getSessionAttribute("usuariosBean");
public String incluir() {
try {
progProjService.incluir(progProj);
progProj = null;
Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return null;
}
public String alterar() {
try {
progProjService.alterar(progProj);
progProj = null;
Mensagem.addMsgSucesso("Alteração realizada com sucesso.");
return "listarProgProj";
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
return null;
}
}
public String excluir() {
try {
progProjService.excluir(progProj);
progProj = null;
progProjs = progProjService.obterTodos();
Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return null;
}
public List<ProgProj> getProgProjs() {
try {
if (progProjs == null) {
progProjs = progProjService.obterTodos();
}
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return progProjs;
}
public List<ProgProj> getProgProjsPorMunicipio(){
try {
if (progProjs == null) {
progProjs = progProjService.obterProgsPorMunicipio(usuarioMBean.getMunicipio().getCodigo());
}
} catch (NegocioException e) {
Mensagem.addMsgErro(e.getMessage());
}
return progProjs;
}
public ProgProj getProgProj() {
if (progProj == null) {
progProj = new ProgProj();
}
return progProj;
}
public void setProgProj(ProgProj progProj) {
this.progProj = progProj;
}
// Relatórios
public String gerarRelatorioResumo() {
Relatorio.carregarRelatorio("/relatorios/ResumoProg.jasper", false);
return null;
}
// Setor
public Long getcodigosetor() {
if (getProgProj().getSetor() != null) {
return getProgProj().getSetor().getCodigo();
}
return 0L;
}
public void setcodigosetor(Long Codigosetor) throws NegocioException {
Setor setor = setorService.obterPorCodigo(Codigosetor);
getProgProj().setSetor(setor);
}
public List<SelectItem> getsetores() throws NegocioException {
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(0L, "Selecione"));
for (Setor setor : setorService.obterTodos()) {
itens.add(new SelectItem(setor.getCodigo(), setor.getNome()));
}
return itens;
}
// ProjPai
public Long getcodprojpai() {
if (getProgProj().getProjpai() != null) {
return getProgProj().getProjpai().getCodigo();
}
return 0L;
}
public void setcodprojpai(Long Codprojpai) throws NegocioException {
ProgProj progProj = progProjService.obterPorCodigo(Codprojpai);
getProgProj().setProjpai(progProj);
}
public List<SelectItem> getprojpais() throws NegocioException {
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(0L, "Selecione"));
for (ProgProj progProj : progProjService.obterTodos()) {
itens.add(new SelectItem(progProj.getCodigo(), progProj.getNome()));
}
return itens;
}
// Usuário
public Long getcodusuario() {
if (getProgProj().getUsuario()!= null) {
return getProgProj().getUsuario().getCodigo();
}
return 0L;
}
public void setcodusuario(Long Codusuario) throws NegocioException {
Usuarios usuarios = usuariosService.obterPorCodigo(Codusuario);
getProgProj().setUsuario(usuarios);
}
public List<SelectItem> getusuarios() throws NegocioException {
List<SelectItem> itens = new ArrayList<SelectItem>();
itens.add(new SelectItem(0L, "Selecione"));
for (Usuarios usuarios : usuariosService.obterTodos()) {
itens.add(new SelectItem(usuarios.getCodigo(), usuarios.getNome()));
}
return itens;
}
public void setListaProjAgua(List<ProgProj> listaProjAgua) {
this.listaProjAgua = listaProjAgua;
}
public List<ProgProj> getListaProjAgua() {
setListaProjAgua(progDao.listarProjAgua(usuarioMBean.getMunicipio().getCodigo()));
/*int resto = listaProjAgua.size()%5;
if (resto != 0){
Integer qntoFalta = 5 - resto;
for (int i=0;i<qntoFalta;i++){
listaProjAgua.add(new ProgProj());
}
*/
return listaProjAgua;
}
public void setListaProjEsgoto(List<ProgProj> listaProjEsgoto) {
this.listaProjEsgoto = listaProjEsgoto;
}
public List<ProgProj> getListaProjEsgoto() {
setListaProjEsgoto(progDao.listarProjEsgoto(usuarioMBean.getMunicipio().getCodigo()));
return listaProjEsgoto;
}
public void setListaProjDrenagem(List<ProgProj> listaProjDrenagem) {
this.listaProjDrenagem = listaProjDrenagem;
}
public List<ProgProj> getListaProjDrenagem() {
setListaProjDrenagem(progDao.listarProjDrenagem(usuarioMBean.getMunicipio().getCodigo()));
return listaProjDrenagem;
}
public void setListaProjResiduos(List<ProgProj> listaProjResiduos) {
this.listaProjResiduos = listaProjResiduos;
}
public List<ProgProj> getListaProjResiduos() {
setListaProjResiduos(progDao.listarProjResiduos(usuarioMBean.getMunicipio().getCodigo()));
return listaProjResiduos;
}
Bem, eu pensava que apenas entidades deveriam implementar serializable.
ae estão eles.
Coloca a tag h:messages no inicio do seu form, dai caso ocorra algum erro na validação ou conversão de algum componentes a mensagem será adicionada no componente.
Coloquei o h:messages … e nada de funcionar, ou melhor,
nada de mostrar error.
neno
Novembro 16, 2010, 2:58pm
#28
roberto, no caso como vc esta guardando o estado do managed bean inteiro
<t:saveState value="#{acaoBean}"/>
Seu manage bean deve implementar Serializable sim, a fim de vc conseguir resgatar seus atributos.
o mesmo se aplica pro a4j:keepAlive, que no caso guarda o proprio menagedBean de qualquer jeito, precisa estar serializado.
[quote=robertoJames]Estou passando por esse problema de novo.
aqui está meu rich:dataTable
<rich:panel>
<rich:dataTable value="#{acaoBean.acaos}" var="set">
<rich:column>
<f:facet name="header">
<h:outputText value="Setor" />
</f:facet>
<h:outputText value="#{set.projeto.setor.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Progr / Proje" />
</f:facet>
<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Seq" />
</f:facet>
<h:outputText value="#{set.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{set.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Início" />
</f:facet>
<h:outputText value="#{set.dataIniStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Fim" />
</f:facet>
<h:outputText value="#{set.dataFimStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Responsável" />
</f:facet>
<h:outputText value="#{set.usuario.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Real.(%)" />
</f:facet>
<h:outputText value="#{set.realizado}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao">
<f:setPropertyActionListener value="#{set}"
target="#{acaoBean.acao}" />
<f:setPropertyActionListener value="#{progprojBean.progProj}"
target="#{acaoBean.progProj}" />
</h:commandButton>
<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
onclick="return confirm('Deseja confirmar a exclusão?');">
<f:setPropertyActionListener value="#{set}"
target="#{acaoBean.acao}" />
</h:commandLink>
</rich:column>
</rich:dataTable>
</rich:panel>
Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>
ao invés dele executar a action:
<navigation-case>
<from-outcome>alterarAcao</from-outcome>
<to-view-id>/paginas/cadastro/acao/alterar.jsp</to-view-id>
</navigation-case>
ele da um refresh na página,
ou seja, ele atualiza a pagina atual e não redireciona para a action mencionada acima.
Alguem poderia me ajudar ?
[/quote]
vc colocou a tag <h:form> ???
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<a4j:loadStyle src="/recursos/css/estilo.css"></a4j:loadStyle>
<title>PMSB</title>
</head>
<body>
<h:form>
<h:messages />
PAINEL DE ACOES
<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao" />
<rich:dataTable value="#{acaoBean.acaos}" var="set"
style="cursor:pointer;"
onRowMouseOver="this.style.backgroundColor='#CEF9FD'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
<rich:column>
<f:facet name="header">
<h:outputText value="Setor" />
</f:facet>
<h:outputText value="#{set.projeto.setor.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Progr / Proje" />
</f:facet>
<h:outputText value="#{set.projeto.progprojStr} : #{set.projeto.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Seq" />
</f:facet>
<h:outputText value="#{set.seq}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{set.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Início" />
</f:facet>
<h:outputText value="#{set.dataIniStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Fim" />
</f:facet>
<h:outputText value="#{set.dataFimStr}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Responsável" />
</f:facet>
<h:outputText value="#{set.usuario.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Real.(%)" />
</f:facet>
<h:outputText value="#{set.realizado}" />
</rich:column>
<rich:column>
<t:saveState value="#{acaoBean}"/>
<t:saveState value="#{progprojBean}"/>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<h:commandButton image="/recursos/imagem/visualizar.png" action="alterarAcao" />
<h:commandLink value="Excluir" action="#{acaoBean.excluir}"
onclick="return confirm('Deseja confirmar a exclusão?');">
<f:setPropertyActionListener value="#{set}"
target="#{acaoBean.acao}" />
</h:commandLink>
</rich:column>
</rich:dataTable>
<rich:spacer height="20" />
<h:commandButton value="Nova Ação"
action="incluirAcao" />
<rich:spacer width="10" />
<h:commandButton value="Voltar" action="PMSB" />
</h:form>
</body>
</html>
</f:view>
ola,
poderia postar os código novamente (todos)? pode ser que alterou o código.
Abraços Luiz
continuo com o mesmo problema.
alguem poderia me dar alguma luz. ???