Como pegar vários itens do formulário, incluindo SelectOneMenu (primefaces) em JSF

Pessoal,

como faço para pegar os dados de um formulário (xhtml). O formulário é extenso e tenho 2 combos preenchidos do BD. Estou sem ideia de como pego todos esses dados.

Segue o xhtml

<ui:composition template="/templates/conteudo.xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
	
	<ui:define name="content" id="SolPortabilidade">
	
	
		<h:form> 
		<h3>Solicitação de Portabilidade</h3>
		<p:panel header="Dados da Operadora" id="SolPortP1">
			
			<h:panelGrid columns="4" style="margin-bottom:10px" cellpadding="5" id="pgrid1" >
		
				<h:outputText value="Código da Receptora:" />				
				<h:outputText value="0121-Embratel" />
				
				<h:outputText value="Código da Doadora:" />
				<p:selectOneMenu value="#{bean.codOperadora}" id="doadora" >
					<f:selectItems value="#{bean.listaDoadora}" />				
				</p:selectOneMenu>
				
				<h:outputText value="EOT Fiscal" />
				<p:selectOneMenu value="#{bean.codEot}" id="eot" >
					<f:selectItems value="#{bean.listaEot}" />					
				</p:selectOneMenu> 
				
				<h:outputText value="Portabilidade Intríseca" for="portIntriseca"/>
				<p:selectBooleanCheckbox value="#{bean.portIntriseca}" id="portIntriseca"/>
				
			
			</h:panelGrid>  
		</p:panel>
</h:form>

<p:commandButton id="enviar" value="Enviar" type="submit" action="" process="@form"/>

</ui:define>

</ui:define>

O Bean:

[code]
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.decorator.Delegate;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import br.com.cpmbraxis.ebt.interfaces.ConsultasSpnService;
import br.com.cpmbraxis.ebt.model.integrator.Eot;//Eot Integrator serve para o Gateway
import br.com.cpmbraxis.ebt.model.gateway.Operadora;

@ViewScoped
@ManagedBean(name=“bean”)
public class SolicitarPortabilidadeBean implements Serializable {

private static final long serialVersionUID = 1L;	

private List<Operadora> listaDoadora = null;
private List<SelectItem> listSelect = new ArrayList<SelectItem>();
private Operadora operadora = new Operadora();	

private List<Eot> listaEot = null;
private List<SelectItem> listSelectEot = new ArrayList<SelectItem>();
private Eot eot = new Eot();

private String codEot;
private String codOperadora;

@EJB
private ConsultasSpnService consultaOp;

public List<SelectItem> getListaDoadora() {
	
	if (listaDoadora == null) {
		
		listaDoadora = new ArrayList<Operadora>();
		listaDoadora = consultaOp.listarOp();
		
		for (Operadora op: listaDoadora) {				
			listSelect.add(new SelectItem(op.getSrvprovid(), op.getSrvprovid()+ " - " + op.getNomeOperadora()));								
		}		
	}		
	return listSelect;
}

public void setListaDoadora(List<Operadora> listaDoadora) {
	this.listaDoadora = listaDoadora;
}

public List<SelectItem> getListaEot() {
	
	if (listaEot == null) {

		listaEot = new ArrayList<Eot>();
		listaEot = consultaOp.listarEot();
		
		for (Eot eot: listaEot) {				
			listSelectEot.add(new SelectItem(eot.getCodEot(), eot.getCodEot()+ " - " + eot.getDesEot()));								
		}			
	}
	
	return listSelectEot;
}

public void setListaEot(List<Eot> listaEot) {
	this.listaEot = listaEot;
}

public Operadora getOperadora() {
	return operadora;
}

public void setOperadora(Operadora operadora) {
	this.operadora = operadora;
}	

public Eot getEot() {
	return eot;
}

public void setEot(Eot eot) {
	this.eot = eot;
}

public ConsultasSpnService getConsultaOp() {
	return consultaOp;
}

public void setConsultaOp(ConsultasSpnService consultaOp) {
	this.consultaOp = consultaOp;
}

public List<SelectItem> getListSelect() {
	return listSelect;
}

public void setListSelect(List<SelectItem> listSelect) {
	this.listSelect = listSelect;
}

public String getCodOperadora() {
	return codOperadora;
}

public void setCodOperadora(String codOperadora) {
	this.codOperadora = codOperadora;
}

public List<SelectItem> getListSelectEot() {
	return listSelectEot;
}

public void setListSelectEot(List<SelectItem> listSelectEot) {
	this.listSelectEot = listSelectEot;
}

public String getCodEot() {
	return codEot;
}

public void setCodEot(String codEot) {
	this.codEot = codEot;
}[/code]

Só aí tenho duas classes Operadora e Eot e consequentemente 2 listas de objetos dessa classe para carregar no selectOneMenu, até aí tudo bem. Como faço para pegar a escolha do usuário (os 2 SelectOndeMenu) mais o valor do campo Portabilidade Intríseca (imputText) e salvar em um arquivo? só vejo exemplos de formulários com uma classe (ex. Pessoa).

Desde já eu agradeço

bom eu faço assim…

<p:selectOneMenu id="tipoTratamento" value="#{passageiroBean.passageiro.formaTratamento}" effect="fade" > <f:selectItem itemLabel="" itemValue="" /> <f:selectItems value="#{passageiroBean.formaTratamento }" var="formaTratamento" itemLabel={formaTratamento.description}" itemValue="{formaTratamento}" /> </p:selectOneMenu>

e no meu bean possui o seguinte metodo

[code]public List getFormaTratamento() {

	List<SelectItem> listFormaTratamento = new ArrayList<SelectItem>();

	for (FormaTratamento ft : FormaTratamento.values()) {
		listFormaTratamento.add(new SelectItem(ft.name(), ft.toString()));
	}
	return listFormaTratamento;
}[/code]

espero ter ajudado =D

Olá darklordkamui, eu consegui pegar os dados do SelectOneMenu desse jeito. Minha dúvida é como o JSF pega os dados selecionados pelo usuário, incluindo imputText, SelectOneMenu, selectBooleanCheckbox tudo em um mesmo formulário. Basta eu colocar todos os atributos no Bean?

Olá dealver,

Exatamente o JSF mapeia todas as propriedades diretamente com o bean que voce adiciona no campo value, por exemplo. Coloque todos os seus atributos no Bean ou crie um objeto referente a tela que voce está criando e dentro do bean tenha uma propriedade daquele objeto. Por exemplo, voce pode ter um objeto Carro dentro do Bean em questão. Ai dentro do objeto Carro voce pode acessar seus atributos por exemplo carro.cor e o jsf irá preencher o valor cor diretamente na propriedade cor do objeto Carro. (Não esqueça que todos os objetos em questão devem ter os métodos get e set)

Ah, so para deixar claro o exemplo que eu dei não tem nada a ver com seu código, foi so algo simples que pensei que poderia te ajudar com a idéia de como o JSF funciona

Pelo que eu vi sua duvida é com o básico de jsf (como ele trabalha)

eu acho melhor você começa
com 1 ou 2 campos para pegar o jeito de como se usa o jsf
conforme for aumentando seu aprendizado você vai inserindo mais componentes na tela

Att

Conseguir fazer pessoal. Obrigada pela ajuda!
jonathan.c.rodrigues você tem toda razão!!! O JSF já mapeia e mantem todos os objetos em seção usando o SessionScoped.

Só mais uma dúvida boba. Como eu pego o Nome da Operadora selecionada? O códico eu consegui op.getSrvprovid() através do codOperadora, mas o Nome ainda não.

for (Operadora op: listaDoadora) { listSelect.add(new SelectItem(op.getSrvprovid(), op.getSrvprovid()+ " - " + op.getNomeOperadora())); }

Obrigada!