Todos os labels da tela estão sendo configurados corretamente com os valores que estão no properties, inclusive os labels da primera tab.
Porém, quando clico na segunda tab, o seguinte erro ocorre:
Já verifiquei todas as chaves no properties, e elas estão lá.
Como disse, o properties está no local correto pois todos os outros labels estão sendo encontrados.
Já experimentei trocar a ordem das tabs, e o erro sempre ocorre quando ocorre o evento da troca das tabs.
Outro problema que estou encontrando é ao usar o f:selectItems no pickList (repararam a criação estática dos valores?).
Já usei o pickList em outras ocasiões e nunca tive problemas.
Seu primeiro problema eu não sei mas o outro creio que com o isto resolve:
<f:selectItems value="#{meuBean.lista}" />
Onde seu getLista te retorna um List
[code] public List getLista() {
List<SelectItem> itens = new ArrayList<SelectItem>();
try {
Collection<Veiculo> veiculos = getListaVeiculos();
for (Veiculo v : veiculos) {
SelectItem item = new SelectItem(v.getId(), v.getDescricao());
itens.add(item);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return itens;
}[/code]
Até a versao 3.3.0 o setLista receberia uma lista de Strings com as ids selecionadas porem na versao 3.3.1 isso nao está funcionando ainda nao sei por que.
[quote=vi-gb]Seu primeiro problema eu não sei mas o outro creio que com o isto resolve:
<f:selectItems value="#{meuBean.lista}" />
Onde seu getLista te retorna um List
[code] public List getLista() {
List<SelectItem> itens = new ArrayList<SelectItem>();
try {
Collection<Veiculo> veiculos = getListaVeiculos();
for (Veiculo v : veiculos) {
SelectItem item = new SelectItem(v.getId(), v.getDescricao());
itens.add(item);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return itens;
}[/code]
Até a versao 3.3.0 o setLista receberia uma lista de Strings com as ids selecionadas porem na versao 3.3.1 isso nao está funcionando ainda nao sei por que.[/quote]
Opa, beleza?
Então, com relação ao problema dos itens, no exemplo de código que eu postei estava usando a inicialização estática dos valores (com f:selectItem) justamente porque ao usar f:selectItems estava obtendo os erros que comentei. Mas descobri o motivo: eu não estava inicializando a a lista de objetos SelectItem no ManagedBean. Criando um ArrayList vazio já resolveu meu problema.
Quanto ao problema das mensagens dos labels, ao invés de usar a MessageBundle eu configurei um resourceBundle para os valores dos labels (o que é mais correto) e tudo funcionou. Antes eu estava deixando os valores em um MessageBundle, que apesar de também funcionar, não é o mais indicado.
[quote=vi-gb]E como voce esta fazendo para que o picklist exiba seus itens selecionados, por que a versao 3.3.1 que estou usando nao exibe de jeito nenhum?
[/quote]
Estou usando um ArrayList de Strings mesmo. Mas percebi um comportamento muito estranho neste componente, nesta última versão. Como eu havia comentado acima, já usei esse componente em outra aplicação, usando outra versão do RF, e não tive problemas.
Já nesta última versão ao selecionar um item para mover de uma lista a outra, dois itens desaparecem da lista de origem, mas somente um realmente vai para a lista de destino.
Outra coisa que tive que fazer neste caso que citei acima, foi deixar de lado o tabPanel, pois todas as vezes que eu mudava de tab, perdia as referências dos itens selecionados no picklist do tab “escondido”. Triste!
cara o cant find bundle for blablabla talvez seja o algum jar do jsf ou myfaces ou morajarra ou ateh da el.jar que nao tem algum arquivo properties, geralmente eles tao no META-INF
[quote=vitenho]cara o cant find bundle for blablabla talvez seja o algum jar do jsf ou myfaces ou morajarra ou ateh da el.jar que nao tem algum arquivo properties, geralmente eles tao no META-INF
valeu[/quote]
Opa, e ae vitenho, beleza?
Então, o problema na verdade era porque eu não tinha configurado meu properties de mensagens como um resourceBundle, mas sim como um messageBundle, como comentei acima. Assim que eu configurei o mesmo como resourceBundle tudo funcionou.
Estranho que para a maioria dos casos de mensagem ele funcionava, mesmo com o messageBundle, apenas nesse caso ele deu problema. Mas o melhor mesmo é deixar como resourceBundle.
Olá…
Eu estou com dificuldades ao usar o pickList, ja consegui exibir o que eu quero na lista, e ela passa de um lado ao outro os ítens tranquilo…
Mas eu nao sei como fazer pra obter somente a lista dos itens selecionados…
eu criei duas listas…
private ArrayList<SelectItem> listaAtributos = new ArrayList();
private ArrayList<SelectItem> listaAtributosSelecionados = new ArrayList();
getters... and setters....
eu li em algum forúm por ai q nao lembro qual agora, que teria q colocar um List na propriedade value do pickList, que os atributos selecionados estariam ali, mas não tah funcionando… o código da página esta assim (é um modal panel):
[code]<rich:modalPanel id=“selecionarCamposPanel” left=“425” top=“200” width=“400” height=“225”>
Selecione os campos do relatório
</rich:modalPanel>[/code]
a idéia é exibir um modal para o usuário escolher quais campos da entidade ele quer que sejam impressos no relatório…
o terceiro botão ali, “Exibir campos” chama outro modal q eu estou usando pra testar só, ele deveria listar os campos selecionados, mas nada aparece…
<rich:modalPanel id="exibirCamposSelecionadosPanel" left="400" top="200" width="400" height="225">
<h:selectManyCheckbox>
<f:selectItems value="#{entidades.listaAtributosSelecionados}" />
</h:selectManyCheckbox>
<h:commandButton value="OK" onclick="Richfaces.hideModalPanel('exibirCamposSelecionadosPanel')" />
</rich:modalPanel>
Alguem sabe o que estou fazendo de errado? o que esta faltando ?
Defina explicitamente o escopo session no mapeamento dos seus Managed Beans e faça um teste. Isto está parecendo resultado de escopo request. Apenas impressão pelo que você descreveu.
intaum, na verdade eu ja havia testado isso antes mesmo de postar… mas testei denovo agora só pra ter certeza, e nao funcionou, vou colocar parte do meu managed bean aqui
[code]@Scope(ScopeType.SESSION) @Name(“entidades”)
public class Entidades {
private Integer id;
private String nome;
private String nomeSimbolico;
private Integer largura;
private ArrayList<Atributos> atributos = new ArrayList();
private ArrayList<SelectItem> listaAtributos = new ArrayList();
private ArrayList<SelectItem> listaAtributosSelecionados = new ArrayList();
public ArrayList<SelectItem> testar() {
//este método popula a listaAtributos
}
//getters and setters
public void setAtributos(ArrayList atributos) {
this.atributos = atributos;
}
public ArrayList<SelectItem> getListaAtributos() {
testar();
return listaAtributos;
}
public ArrayList<SelectItem> getListaAtributosSelecionados() {
return listaAtributosSelecionados;
}
public void setListaAtributosSelecionados(ArrayList<SelectItem> listaAtributosSelecionados) {
this.listaAtributosSelecionados = listaAtributosSelecionados;
}
Tente faze o seguinte: no atributo que guarda os valores selecionados não coloque o tipo como SelectItem. Coloque a classe que representa a chave do valor apresentado:
Exemplo:
private ArrayList<String> listaAtributosSelecionados = new ArrayList<String>();
Eu tbem ja tinha tentado deixar o tipo da lista dos ítens selecionados como String, tentei denovo agora mais não funfo… Vou colocar meu código ai, talvez esteja faltando algo, ou algo errado sei lah… (Obs: Essa lista de atributos, virá do banco, por hora eu estou criando ela em um for que foi omitido pra economizar espaço)
Código do MB
[code]@Scope(ScopeType.SESSION) @Name(“entidades”)
public class Entidades {
private Integer id;
private String nome;
private String nomeSimbolico;
private Integer largura;
private ArrayList<Atributos> atributos = new ArrayList();
private ArrayList<SelectItem> listaAtributos = new ArrayList();
private ArrayList<String> listaAtributosSelecionados = new ArrayList();
public ArrayList<SelectItem> testar() {
for (Atributos a : atributos) {
listaAtributos.add(new SelectItem(a.getNome(), a.getNomeSimbolico()));
}
return listaAtributos;
}
public void listarSelecionados() {
for (String s : listaAtributosSelecionados) {
System.out.println(s);
}
}
//outros getters & setters
public ArrayList<SelectItem> getListaAtributos() {
testar();
return listaAtributos;
}
public void setListaAtributos(ArrayList<SelectItem> listaAtributos) {
this.listaAtributos = listaAtributos;
}
public ArrayList<String> getListaAtributosSelecionados() {
return listaAtributosSelecionados;
}
public void setListaAtributosSelecionados(ArrayList<String> listaAtributosSelecionados) {
this.listaAtributosSelecionados = listaAtributosSelecionados;
}
}[/code]
Código dos dois modal panels da página
[code]<rich:modalPanel id=“selecionarCamposPanel” left=“425” top=“200” width=“400” height=“225”>
Selecione os campos do relatório
No segundo modal panel, quando eu abro e fecho ele mais de duas vezes, aparecem vários checkbox, tipo, só tem três campos na lista de atributos, e dai na lista de atributos selecionados, aparecem sei lah, uns 20 eu acho, ultrapassa o tamanho do modal panel, exibindo esses três campos repetidamente várias vezes…
no lugar de <f:selectItems value="#{entidades.listaAtributos}" />
tentei colocar valores estaticos com <f:selectItem itemValue="Teste 1" itemLabel="Teste 1"/>
<f:selectItem itemValue="Teste 2" itemLabel="Teste 2"/>
mas o segundo modal, continua não exibindo os ítens selecionados pelo usuário