Erro ao executar action="#{bean}"

2 respostas
S

Olá amigos

estou tentando executar isto:

<p:commandButton action="#{bean}" id="simAction1" value="Sim"
	ajax="false" process="@this" style="margin-right: 8px"
	icon="botaoSim" oncomplete="PF('cd').hide()">
</p:commandButton>

dá o seguinte erro:

ADVERTÊNCIA: #{bean}: javax.el.ELException: /confirm.xhtml @33,50 action="#{bean}": Identity 'bean' does not reference a MethodExpression instance, returned type: java.lang.String
javax.faces.FacesException: #{bean}: javax.el.ELException: /confirm.xhtml @33,50 action="#{bean}": Identity 'bean' does not reference a MethodExpression instance, returned type: java.lang.String

o parâmetro #{bean} vem deste xhtml:

<ui:include src="confirm.xhtml" >
			  <ui:param name="header"     value="#{cadastrarApreensaoForm.header}"/>
			  <ui:param name="message"    value="#{cadastrarApreensaoForm.message}"/>
			  <ui:param name="bean"       value="#{cadastrarApreensaoForm.bean}"/>
			  <ui:param name="acao"       value="#{cadastrarApreensaoForm.action}"/>
			</ui:include>

que configuro no form:

public String setarSalvarApreensao() throws IOException {
		this.setHeader("Salvar Apreensão");
		this.setMessage("Deseja salvar esta apreensão...");
		this.setBean("#{cadastrarApreensaoForm.salvarApreensao}");
		this.setAction("salvarApreensao");
		RequestContext.getCurrentInstance().execute("PF('cd').show()");			
		return "cadastrarapreensao";		
	}

Alguém poderia ajudar?

muito obrigado

Silvio Guedes

2 Respostas

rafadelnero

Olá Silvio, você deve invocar um método no action do seu botão.

S

Olá rafadelnero

bem estou tentando fazer um confirmDialog padrão para que todas as minhas aplicações possam usá-la.

Quando clico no botão salvar da página de cadastro ele executa isto no form:

public String setarSalvarApreensao() throws IOException {
		this.setHeader("Salvar Apreensão");
		this.setMessage("Deseja salvar esta apreensão...");
		this.setBean("#{cadastrarApreensaoForm.salvarApreensao}");
		this.setAction("salvarApreensao");
		RequestContext.getCurrentInstance().execute("PF('cd').show()");			
		return "cadastrarapreensao";		
	}

depois ele executa o

confirmDialog .execute("PF('cd').show()");

que está está em outra página (confirm,xhtml) . Esta página está incluída na página de cadastro:

<ui:include src="confirm.xhtml" >
			  <ui:param name="header"     value="#{cadastrarApreensaoForm.header}"/>
			  <ui:param name="message"    value="#{cadastrarApreensaoForm.message}"/>
			  <ui:param name="bean"       value="#{cadastrarApreensaoForm.bean}"/>
			  <ui:param name="action"     value="#{cadastrarApreensaoForm.action}"/>
			</ui:include>

Então a página confirm.xhtml tem os botões Sim e Não.

<p:commandButton action="#{bean[action]}" id="simAction" value="Sim"
				ajax="false" process="@this" style="margin-right: 8px"
				icon="botaoSim" oncomplete="PF('cd').hide()">
			</p:commandButton>

se eu clicar Sim ele deveria executar a ação que vem do form passada como parâmetro: action="#{bean[action]}"

this.setBean("#{cadastrarApreensaoForm.salvarApreensao}");
		this.setAction("salvarApreensao");

muito obrigado

Silvio Guedes

Criado 20 de março de 2015
Ultima resposta 21 de mar. de 2015
Respostas 2
Participantes 2