FaceLets: Nome do feijão que passava com a interface do usuário: Param to Action Atributo

StackOverflow https://stackoverflow.com/questions/1783282

  •  21-09-2019
  •  | 
  •  

Pergunta

Devido a alguns componentes personalizados que esperam um nome de feijão (não a instância do feijão) em seus atributos, preciso passar o nome real do feijão entre as páginas. Como o próprio feijão também é usado por componentes que não são do cliente, gostaria de evitar o uso de adicionais ui:param (como descrito aqui Ação passando emu003Crich:modalPanel>) como especificará essencialmente o mesmo feijão.

É possível especificar a ação do componente usando o nome do feijão fornecido com ui:param?

Basicamente, estou tentando alcançar o seguinte:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/template.xhtml">

   <ui:param name="beanName" value="sessionBean"/>
   ...

</ui:composition>

e template.xhtml IS

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
template="/someothertemplate.xhtml">

  </ui:define name="somename">
    <h:form>
        <a4j:commandButton value="test" action="#{beanName.delete}"/>
    </h:form>
  </ui:define>
</ui:composition>

Embora o método de exclusão seja adequadamente definido (verificado com action="#{sessionBean.delete}") O código acima me dá

javax.faces.facesexception: #{beanname.delete}: javax.el.methodnotfoundException: /template.xhtml @201,89 action = " #{beanname.delete}": método não encontrado: sessionbean.delete ()

Foi útil?

Solução

Você deve poder fazer referência ao feijão por meio de seu escopo:

 <a4j:commandButton value="test"
      action="#{sessionScope[beanName].delete}"/>

Outras dicas

<a4j:commandButton value="test" action="#{bean[action]}" />

Os parâmetros para passar

<ui:param name="bean" value="#{sessionBean}" />
<ui:param name="action" value="delete" />

você pode usar #{bean['delete']} Se o seu nome de ação for corrigido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top