Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
JSF – Tag para botão com chamada a método em bean gerenciado
Gabarito: letra E. A tag correta no JavaServer Faces (JSF) para criar um botão que invoca um método em um bean gerenciado é <h:commandButton>, com o atributo action apontando para o método usando a sintaxe de Expression Language (EL) #{}. A alternativa E respeita exatamente essa sintaxe: <h:commandButton value="Salvar" action="#{processo.salvar}" />.
A banca testa o conhecimento da sintaxe correta do JSF e a diferença entre as linguagens de expressão #{} (usada em JSF para method expressions e value expressions com deferred evaluation) e ${} (usada em JSP para immediate evaluation e também em JSF, mas para value expressions apenas, não para method expressions). Além disso, o namespaceh (HTML) é padrão para componentes JSF de saída HTML.
Alternativa A — ❌ Incorreta
<jsf-commandButton value="Salvar" submit="$ {processo.salvar}" /> – O prefixo jsf não é padrão; o correto é h. O atributo submit não existe em um botão JSF; o correto é action. A sintaxe ${...} com espaço está incorreta, e mesmo ${processo.salvar} não é adequado para method expression (deveria ser #{}).
Alternativa B — ❌ Incorreta
<h:button value="Salvar" submit="# {processo.salvar}" /> – A tag <h:button> é para navegação (gera um link com aparência de botão), não para submissão de formulário; ela não possui atributo submit. O correto seria <h:commandButton> e o atributo action. Além disso, há espaço na expressão # {processo.salvar}, que é inválida.
Alternativa C — ❌ Incorreta
<jsf:button value="Salvar"” action="#{processo.salvar}" /> – O prefixo jsf novamente está errado; o correto é h. Há uma aspa dupla extra (" após "Salvar"). A sintaxe do namespace e a tag button (em JSF, a tag para botão de comando é commandButton, não button).
Alternativa D — ❌ Incorreta
<h:commandButton value="Salvar" action="${processo.salvar()}" /> – Embora a tag e o atributo estejam corretos, o uso de ${} com parênteses para método não é válido em JSF para method expression. Em JSF, method expressions devem usar #{} (ex.: #{processo.salvar}) – ${} é usado apenas para value expressions e não aceita chamada de método com parênteses.
Alternativa E — ✅ Correta ⟵ GABARITO
<h:commandButton value="Salvar" action="#{processo.salvar}" /> – Sintaxe perfeitamente correta: tag commandButton no namespace h, atributo value com o rótulo, e atributo action com method expression usando #{} para referenciar o método salvar do bean gerenciado processo. O bean deve estar registrado no escopo apropriado (requisição, sessão, etc.).
PEGA ESSA DICA!
Em provas sobre JSF, lembre-se:
Botões de comando (que disparam ação) usam <h:commandButton>. Botões de navegação (link) usam <h:button>.
O atributo para o método é action (não submit nem actionListener para método simples).
Method expressions sempre usam #{} (p. ex., #{bean.metodo}), nunca ${}. O ${} é usado apenas para value expressions (como #{bean.propriedade}, mas também pode ser ${bean.propriedade} em alguns contextos, porém para método é obrigatório #{}).