Pular para o conteúdo principal

Questão de Programação — Web — FCC 2023

ProgramaçãoWeb
Código
fc070429
Banca
FCC
Órgão
TRT - 21ª Região (RN)
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Área: Apoio Especializado - Tecnologia da Informação

A tag JavaServer Faces (JSF) que cria um botão com o rótulo Salvar e associa-o a um método salvar em um bean gerenciado chamado processo é

  1. A<jsf-commandButton value="Salvar" submit="$ {processo.salvar}" />
  2. B<h:button value="Salvar" submit="# {processo.salvar}" />
  3. C<jsf:button value="Salvar"” action="#{processo.salvar}" />
  4. D<h:commandButton value="Salvar" action="${processo.salvar()}" />
  5. E<h:commandButton value="Salvar" action="#{processo.salvar}" />
Revelar gabarito e comentário

GabaritoE — <h:commandButton value="Salvar" action="#{processo.salvar}" />

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 namespace h (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 #{}).

Gabarito: letra E.

Link permanente: /questoes/fc070429