Chamar método para ComboBox RichFaces

Pessoal,

não sei se estou fazendo da maneira correta. Estou querendo popular um ComboBox através de uma consulta no BD e estou fazendo da seguinte forma:


 //Variáveis de Instâncias

private String login;
	private String senha;
	private List<SelectItem> listaItens;

// Método para criar uma lista de SelectItem para popular no ComboBox
public List<SelectItem> listar()
	{
		// Somente teste

		this.listaItens = new ArrayList<SelectItem>(); 
		listaItens.add(new SelectItem("Banana"));
		listaItens.add(new SelectItem("Uva"));
		listaItens.add(new SelectItem("Pera"));
		
		SelectItem lista = new SelectItem(listaItens);
		
		return 	lista;
	}

 // no JSF

<r:comboBox id="pais" selectFirstOnUpdate="false"
				defaultLabel="Selecione Item">
				<f:selectItems value="#{usuario.listaItens}" id="cmbItens"/>
			</r:comboBox>

No facesConfig

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">
	<managed-bean>
		<managed-bean-name>usuario</managed-bean-name>
		<managed-bean-class>br.coelce.modelo.Usuario</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
		<managed-property>
			<property-name>login</property-name>
			<property-class>java.lang.String</property-class>
			<value></value>
		</managed-property>
		<managed-property>
			<property-name>senha</property-name>
			<property-class>java.lang.String</property-class>
			<value></value>
		</managed-property>
	</managed-bean>
	<navigation-rule>
		<display-name>index</display-name>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>success</from-outcome>
			<to-view-id>/principal.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	<navigation-rule>
		<display-name>index</display-name>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>failure</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

</faces-config>

Erro que está sendo apresentado…

javax.servlet.ServletException: Value  of tag <selectItems> attribute is incorrect

Eu não posso chamar um método diretamente em um Bean para popular um componete com o retorno do método ?

Pessoal, estou estudando do zero o framwork JSF e tem certas coisas que não consigo entender. Fico grato com a ajuda de vcs.

:slight_smile:

Membros,

finalmente consegui. Pesquisando eu encontrei um tópico informando que deve haver OBRIGATORIAMENTE um get no nome do método. Achei estranho por que em um <h:commandButton> eu chamo um método que não tem get

Alguém pode me explicar a diferença ? É realmente obrigatório o uso do get ?

Obrigado.

:slight_smile:

Tem uma diferença entre chamar um método (action) de um bean e manipular propriedades do mesmo. No caso de chamada de método, se deve retornar uma String, que será usada para definir para onde você será redirecionado. No caso de se querer popular a lista da combobox, você está manipulando uma propriedade, logo, precisa ter getNomeDaPropriedade e setNomeDaPropriedade.