Criando botoes dinamicos... duvida

2 respostas
T

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

public ListDataModel getBotao() throws Throwable {
		List<BotaoDTO> lista;
		lista = new ArrayList<BotaoDTO>();
		
		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);
	}

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: [email removido]()   
    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)

2 Respostas

eltonk

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…

A

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.

Criado 7 de março de 2008
Ultima resposta 11 de mar. de 2008
Respostas 2
Participantes 3