Criando botoes dinamicos... duvida

boa tarde pessoal… é o seguinte tenho uma jsp que inclui pessoas… dentro do meu bean eu criei um metodo onde ele cria os botões através do código, certo… até aí funfou tudo blz… mas quando eu coloco o valor da variável btnAction no meu action do h:commandButton dá um erro… as outras variaveis de estilo e valor dá certo… aí vai meu código pra vcs terem uma idéia do que quero fazer;;;

<h:dataTable value="#{pessoa.botao}" var="obj"> <h:column> <h:commandButton type="submit" action="#{obj.btnAction}" value="#{obj.btnValue}" styleClass="#{obj.btnStyle}"/><br> </h:column> </h:dataTable> <h:dataTable value="#{pessoa.botao}" var="obj"> <h:column> <h:commandButton type="submit" action="#{obj.btnAction}" value="#{obj.btnValue}" styleClass="#{obj.btnStyle}"/><br> </h:column> </h:dataTable>

meu procedimento no bean

[code]public ListDataModel getBotao() throws Throwable {
List lista;
lista = new ArrayList();

	BotaoDTO dto = new BotaoDTO();
	dto.setBtnAction("pessoa.incluir");
	dto.setBtnStyle("btnok");
	dto.setBtnValue("Salvar");
	lista.add(dto);
	
	BotaoDTO dtoa = new BotaoDTO();
	dtoa.setBtnAction("pessoa.cancelar");
	dtoa.setBtnStyle("btncancelar");
	dtoa.setBtnValue("Cancelar");
	lista.add(dtoa);
	
	return new ListDataModel(lista);
} [/code]

Desde já obrigado pelas dicas…
Até +++

meu erro…

view plaincopy to clipboardprint? javax.faces.FacesException: #{obj.btnAction}: org.apache.jasper.el.JspMethodNotFoundException: /IncluirPessoa.jsp(63,4) '#{obj.btnAction}' Method not found: br.teste.manterpessoa.BotaoDTO@1a998c7.btnAction() com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110) javax.faces.component.UICommand.broadcast(UICommand.java:387) javax.faces.component.UIData.broadcast(UIData.java:926) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:458) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:763) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) br.teste.util.FiltroHibernate.doFilter(FiltroHibernate.java:21)

Velho,

action="#{obj.btnAction}"

Isso não deveria estar apontando para um método?!
Action é uma ação que será executada… e no teu caso, o obj.btnAction não é nenhuma ação…

Acho que você cometeu um erro que eu faço sempre :smiley:
Tipo, numa action vc chama o método pelo nome exato, ou seja, você vai executar ali um método chamado btnAction dentro do obj.
Você queria que ele chamasse um getter do atributo/variável btnAction (método getBtnAction), suponho, mas ele chamou o método que eu citei acima e por isso não conseguiu encontrar.

Agora, quanto à sua idéia, acredito que não seja possível você definir dinamicamente que action vai ali (supondo que seu métodos btnAction retorne uma String tipo meuBeanFeliz.meuMetodoLegal num caso e a String meuBeanJaspion.meuMetodoExterminadorDeMonstros em outro caso, por exemplo) pq ele vai entender que essa String que vc retornou é um valor de retorno da action e vai tentar fazer um forward baseado nela.