Thiago, boa tarde! Tudo bem?
Vamos tentar responder:
1- A utilização da anotação (@ManagedBean) é uma maneira de simplificar a indicação de que a classe indicada é uma classe ManagedBean, e que deve ser "gerenciada" pelo JSF.
Antes do JSF 2.0, essa configuração era feita no arquivo "faces-config.xml", onde você indicada os dados da classe a ser gerenciada pelo jsf (ManagedBean), e suas configurações (de escopo, nome, etc), como no exemplo abaixo:
...
<managed-bean>
<managed-bean-name>meuManagedBean</managed-bean-name>
<managed-bean-class>br.com.alura.managedBeans.MeuManagedBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
...
- Ao abrir a tag
<managed-bean>
, você indica que haverá uma classe gerenciada pelo JSF, e que você indicará suas configurações dentro dessa tag. - A tag
<managed-bean-name>
indica o nome que você utilizará no .xhtml (ou .jsp dependendo da aplicação) para indicar ao JSF que esse atributo (Ex:meuManagedBean.nome
)ou método citado (Ex:meuManagedBean.abrir
) pertence a classe que você havia mapeado. - A tag
<managed-bean-class>
é a indicação dos pacotes e da classe a qual o JSF deve procurar quando a página chamar por esse ManagedBean - A tag
<managed-bean-scope>
é a indicação do escopo dessa classe.
Com relação ao atributo "for", teria como você postar o trecho de código que você tem dúvida?
Também gostaria de um trecho de código de como você está utilizando o "fieldset", para poder tentar te ajudar.
Espero ter ajudado!