JSF - Simplismente não executa

Olá a todos,
estou desenvolvendo um exercicio pra universidade, porém nesse bendito exercicio quando clico no meu botão na página xhtml ele não executa nada na classe, já olhei, olhei de novo e mais uma vez, e não consegui achar o erro, tentei fazer com um botão pra cada método, depois mudei pra um botão com 3 opções, e nada. O que estou fazendo errado e não estou conseguindo ver :shock:

Exer4.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
    <head>
        <title>TODO supply a title</title>
    </head>
    <f:view>
        <h:body>
            <h:inputText required="true" value="#{vocabulario.palavra}"
                         requiredMessage="A palavra precisa ser informada!" /><br />
            <h:selectOneRadio value="#{vocabulario.opt}" >
                <f:selectItem itemLabel="Adicionar" itemValue="1" />
                <f:selectItem itemLabel="Remover" itemValue="2" />
                <f:selectItem itemLabel="Consultar" itemValue="3" />
            </h:selectOneRadio>
            <h:commandButton value="Executar" action="#{vocabulario.tratar()}" />
            <br />
            
            <h:messages></h:messages>
            <br />
            
            <h:dataTable value="#{vocabulario.arr}" var="x">
                <h:column>
                    <h:outputText value="#{x}" />
                </h:column>
            </h:dataTable>
        </h:body>
    </f:view>
</html>

Vocabulario.java

package controle;

import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class Vocabulario {

    private ArrayList<String> arr = new ArrayList<String>();
    private String palavra;
    private String consulta;
    private int opt = 1;

    public Vocabulario() {
    }

    public int getOpt() {
        return opt;
    }

    public void setOpt(int opt) {
        this.opt = opt;
    }

    public String tratar() {
        switch (opt) {
            case 1:
                adicionar();
                break;
            case 2:
                remover();
                break;
            case 3:
                consultar();
                break;
        }
        return null;
    }

    public String adicionar() {
        if (!arr.contains(palavra)) {
            arr.add(palavra);
            consulta = "Palavra inserida com sucesso!";
        } else {
            consulta = "Palavra já existe";
        }
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Resultado:", consulta));
        return null;
    }

    public String remover() {
        if (arr.contains(palavra)) {
            arr.remove(palavra);
            consulta = "Palavra removida com sucesso!";
        } else {
            consulta = "Palavra não existe para ser removida";
        }
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Resultado:", consulta));
        return null;
    }

    public String consultar() {
        if (arr.contains(palavra)) {
            consulta = "A palavra existe no vocabulário!";
        } else {
            consulta = "A palavra não existe no vocabulário!";
        }

        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Resultado:", consulta));
        return null;
    }

    public String getPalavra() {
        return palavra;
    }

    public void setPalavra(String palavra) {
        this.palavra = palavra;
    }

    public String getConsulta() {
        return consulta;
    }

    public void setConsulta(String consulta) {
        this.consulta = consulta;
    }

    public ArrayList<String> getArr() {
        return arr;
    }

    public void setArr(ArrayList<String> arr) {
        this.arr = arr;
    }
}

Faltou o form aí, cara.

E troca de head para h:head

MEU DEUS, vo nem falar nada…
valeu!
aproveitando o gancho:
quando eu abro esse meu projeto em outro computador ele dá o seguinte erro no import javax.faces.bean.ManagedBean;, import javax.faces.bean.SessionScoped;:

javax.faces.bean does not exist.

porém nos meus frameworks do projeto aparece adicionado o JavaServer Faces

Verifica tb as configurações de biblioteca do seu projeto, verifica se a lib do majorra esta configurada e verifica o seu web.xml para ver se esta ok, não esquece tb do faces-config.xml você deve ter o seu bean mapeado la.

Valeu amigo, era a Biblioteca mesmo, adicionei o muleke lá e funcionou!
Abraço a todos