[RESOLVIDO]Capturar valor do selectOneMenu!

Pessoal

preciso recuperar o item selecionado desse selectOneMenu… Ele ta listando diretamente dentro do banco de dados

<h:selectOneMenu id="selecioneitem" value ="#{itemBean.itemm}">
 				<f:selectItem itemLabel="Selecione" itemValue=""/>  
 				<f:selectItems 
 					value="#{itemBean.itens}"
 					var ="itens"
					itemValue="#{itens}"
					itemLabel="#{itens}"/>
				</h:selectOneMenu>		

Como faco isso ?

Obrigado :slight_smile:

Cara,

o valor selecionado será atribuido na variavel itemm do seu Bean itemBean

esse #{itemBean.itens} é um list do que?
SelectItem?

[quote=luan_gazin]esse #{itemBean.itens} é um list do que?
SelectItem?[/quote]

exato…

public List<String> getItens() {
		ItemRN itemRN = new ItemRN();
		this.itens = itemRN.listarNomes();
		return itens;
	}

[quote=hmsilva]Cara,

o valor selecionado será atribuido na variavel itemm do seu Bean itemBean[/quote]

Entao cara, eu to tentando pegar o valor desse itemm (no caso getItemm) em outra classe (RequisicaoBean)

Mas nao to acertando fazer isso…

Qual escopo dos beans? O ItemBean deve ter escopo maior ou igual que o RequisicaoBean, de preferência Session.

Adicione no RequisicaoBean:

@ManagedProperty(value="#{itemBean}")
private ItemBean itemBean

public void setItemBean(ItemBean itemBean) {
      this.itemBean = itemBean;
}

Pronto! Para capturar o valor use:

itemBean.getItemm();

[quote=benignoms]Qual escopo dos beans? O ItemBean deve ter escopo maior ou igual que o RequisicaoBean, de preferência Session.

Adicione no RequisicaoBean:

@ManagedProperty(value="#{itemBean}")
private ItemBean itemBean

public void setItemBean(ItemBean itemBean) {
      this.itemBean = itemBean;
}

Pronto! Para capturar o valor use:

itemBean.getItemm();

Obrigado, meu querido… Vou tentar aqui e depois eu posto. Mas pelo q eu vi vai dar certo :slight_smile:

[/quote]

[quote=tiago__][quote=luan_gazin]esse #{itemBean.itens} é um list do que?
SelectItem?[/quote]

exato…

public List<String> getItens() { ItemRN itemRN = new ItemRN(); this.itens = itemRN.listarNomes(); return itens; } [/quote]

Como vc esta usando um List aconselho vc fazer algo assim:
Obs. sei que o exemplo abaixo não tem nada a haver com o seu projeto, mas é apenas pra vc entender,

public class Mbean {  
    private List<SelectItem> combo;  
    private String cidadeSelecionada;  
  
    // getters e setters suprimidos  
  
    public List<SelectItem> getCombo() {  
        if (combo == null) {  
            combo = new ArrayList<SelectItem>();  
            combo.add(new SelectItem("PA","Pará");  
            combo.add(new SelectItem("CE","Ceará");  
              
        }  
        return combo;  
    }  
}  

No JSP ou XHTML

<f:view>  
    <h:selectOneMenu value="#{mbean.cidadeSelecionada}" />  
        <f:selectItem value="#{mbean.combo}" />  
    </h:selectOneMenu>  
</f:view>  

Vai um link sobre isso !!!

http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/

[quote=tiago__][quote=benignoms]Qual escopo dos beans? O ItemBean deve ter escopo maior ou igual que o RequisicaoBean, de preferência Session.

Adicione no RequisicaoBean:

@ManagedProperty(value="#{itemBean}")
private ItemBean itemBean

public void setItemBean(ItemBean itemBean) {
      this.itemBean = itemBean;
}

Pronto! Para capturar o valor use:

itemBean.getItemm();

Obrigado, meu querido… Vou tentar aqui e depois eu posto. Mas pelo q eu vi vai dar certo :slight_smile:

[/quote][/quote]

Meu filho, deu tudo certo… Agora eu vou pegar esse valor e jogar como parametro em uma consulta p ele retornar o objeto, mas isso
eu sei fazer ^^

So me explica uma coisa: @ManagedProperty(value="#{itemBean}") ->> P q serve esse @ManagedProperty ??

Obrigadoo

[quote=luan_gazin][quote=tiago__][quote=luan_gazin]esse #{itemBean.itens} é um list do que?
SelectItem?[/quote]

exato…

public List<String> getItens() { ItemRN itemRN = new ItemRN(); this.itens = itemRN.listarNomes(); return itens; } [/quote]

Como vc esta usando um List aconselho vc fazer algo assim:
Obs. sei que o exemplo abaixo não tem nada a haver com o seu projeto, mas é apenas pra vc entender,

public class Mbean {  
    private List<SelectItem> combo;  
    private String cidadeSelecionada;  
  
    // getters e setters suprimidos  
  
    public List<SelectItem> getCombo() {  
        if (combo == null) {  
            combo = new ArrayList<SelectItem>();  
            combo.add(new SelectItem("PA","Pará");  
            combo.add(new SelectItem("CE","Ceará");  
              
        }  
        return combo;  
    }  
}  

No JSP ou XHTML

<f:view> <h:selectOneMenu value="#{mbean.cidadeSelecionada}" /> <f:selectItem value="#{mbean.combo}" /> </h:selectOneMenu> </f:view> [/quote]

Do outro jeito deu certo, e eu so preciso da String p jogar como parametro em uma consulta… Ta tranquilo :wink:

Mesmo assim, obrigado !

“The presence of this annotation on a field of a class annotated with ManagedBean instructs the system to inject a value into this property as described in section JSF.5.3 of the spec prose document in the subsection”

fonte: http://docs.oracle.com/javaee/6/api/javax/faces/bean/ManagedProperty.html

[quote=tiago__][quote=tiago__][quote=benignoms]Qual escopo dos beans? O ItemBean deve ter escopo maior ou igual que o RequisicaoBean, de preferência Session.

Adicione no RequisicaoBean:

@ManagedProperty(value="#{itemBean}")
private ItemBean itemBean

public void setItemBean(ItemBean itemBean) {
      this.itemBean = itemBean;
}

Pronto! Para capturar o valor use:

itemBean.getItemm();

Obrigado, meu querido… Vou tentar aqui e depois eu posto. Mas pelo q eu vi vai dar certo :slight_smile:

[/quote][/quote]

Meu filho, deu tudo certo… Agora eu vou pegar esse valor e jogar como parametro em uma consulta p ele retornar o objeto, mas isso
eu sei fazer ^^

So me explica uma coisa: @ManagedProperty(value="#{itemBean}") ->> P q serve esse @ManagedProperty ??

Obrigadoo[/quote]

Muito obrigado meu velho :stuck_out_tongue:

O meu problema é que o valor statusAtual é sempre null ou “” como é string, ou seja, é como se ele não pegasse o valor selecionado.

     <p:selectOneMenu value="#{redacaoMB.statusAtual}" var="statusAtual" >    

                <f:selectItem itemLabel="Corrigida" itemValue="Corrigida" />  
                <f:selectItem itemLabel="Recorrigida" itemValue="Recorrigida"/>
                <f:selectItem itemLabel="Não Corrigida" itemValue=" Nao Corrigida"/>

      </p:selectOneMenu>

Porque preciso usar o valor armazenado em statusAtual na pesquisa do código abaixo:

   <p:fieldset legend="LISTA DE REDAÇÕES" style="color: cornflowerblue">
           

            <p:dataTable id="tabelaRed" value="#{redacaoMB.redList}" var="con" rendered="#{redacaoMB.pesquisarRedacoesStatus(statusAtual) > 0}" paginator="true" rows="10"  
                         paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">

                 <p:column  >
                    <f:facet name="header">
                        <h:outputText value="Tema" style="color: white"/>
                    </f:facet>             
                    <h:form >
                        <h:commandLink value="${con.tema}">   
                            <f:setPropertyActionListener value="#{con}" target="#{redacaoMB.redacao}"/>
                        </h:commandLink>  
                    </h:form>
                </p:column>

                        .....

                 </h:form>
        </p:column>

     </p:dataTable> 

Meu metodo pesquisarRedacoesStatus(statusAtual) da classe RedacaoMB é descrito abaixo:

private String statusAtual;

public int pesquisarRedacoesStatus(String status) {
redacoes = new ArrayList();
for (Redacao r : dao.findRedacaoEntities()) {
if ((r.getStatus().equals(status))) {
redacoes.add®;

        }
    }
    
    return redacoes.size();

}

public String getStatusAtual() {
return statusAtual;
}

public void setStatusAtual(String sts) {
    this.statusAtual = sts;
}

Por fim quando realizo a pesquisa vem todas as redações corrigidas, não corrigidas, e recorrigidas, e não como deveria mostrar apenas o status que foi selecionado.
O que falta? o que está dando errado no meu código? me ajudem por favor!
Desde já agradeço!