opa 
Uso a mesma página para exibir um botão mas dependendo de onde vier a requisição, preciso setar o label e a action diferente…tem alguma maneira de fazer isso usando o mesmo botão sem a necessidade de criar outro?
[]'s
opa 
Uso a mesma página para exibir um botão mas dependendo de onde vier a requisição, preciso setar o label e a action diferente…tem alguma maneira de fazer isso usando o mesmo botão sem a necessidade de criar outro?
[]'s
Dá um binding no button e utilize os métodos disponíveis.
Mas procure outra solução.
mas ai eu vou precisar criar um campo do tipo Hidden pra passar algum valor e isso eu não qro fazer
conhece outra solução?
Você não pode criar dois botões mesmo e usar o atributo rendered para decidir qual botão exibir?
Discordo, dependendo não é necessário.
Explica um pouco melhor o problema, pode ser q eu esteje viajando tbm.
Eu pensei nos 2 botões mas não cheguei a uma lógica razoável … pq o cenário é o seguinte:
pagina X com o botão OK
se X for acessado através da A, a função do OK deve ser L e se X for acessado do B, a função e o label do botão muda pra C
entende?
Ah e vcs sabem como que eu posso acessar um método de outra classe sem precisar dar New() nele?
Faça um binding e altere o destino da action em tempo de execução, como o colega ja falou.
Porque fazer com que o mesmo botão tenha duas ações diferentes se você pode criar dois botões com o atributo rendered?
Eu imaginaria assim, um managedBean no escopo session acessado por essas três páginas teria os métodos acaoA() e acaoB(), assim:
enum Acao {SEM_ACAO, A, B};
Acao acaoAtual;
public String acaoA() {
acaoAtual = Acao.A;
return "sucesso";
}
public String acaoB() {
acaoAtual = Acao.B;
return "sucesso";
}
Quando o botão da página A é acionado, sua ação é acaoA(), e quando o botão da página B é acionado, sua ação é acaoB(). Imaginemos que existe uma regra em faces-config.xml que diz que quando o retorno é “sucesso”, a página resultado é X.
Em X, eu teria dois botões:
<h:commandButton label="OK" action="#{mb.l}" rendered="#{mb.veioDeA}"/>
<h:commandButton label="C" action="#{mb.c}" rendered="#{mb.veioDeB}"/>
Mas só um dos botões seria exibido, pois no managedBean, além dos métodos acima eu teria:
public boolean isVeioDeA() {
return currAction == Action.A;
}
public boolean isVeioDeB() {
return currAction == Action.B;
}
Fazendo com que só um dos botões fosse exibido
Certo?