selectItem está vindo com o value false como default

8 respostas
J

Pessoal,

Tenho um selectOneMenu com três selectItem, não gostaria que nenhum desses itens viesse marcados como default, ou seja, não queria nenhum com selected ativado, mas inexplicavelmente, o item que tem como value false está sempre vindo como default (está sempre vindo marcado). Como resolver isso?

Código:

<p:selectOneMenu id="ativo" value="#{setorController.setor.ativo}" required="true" requiredMessage="Por favor, informe se o setor está ativo.">
                  <f:selectItem itemValue="" itemLabel="Selecione..."/>
                  <f:selectItem itemValue="true" itemLabel="Sim"/>
                  <f:selectItem itemValue="false" itemLabel="Não"/>                                         
</p:selectOneMenu>

O código HTML está assim

<div id="formManterSetor:ativo" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all ui-helper-clearfix"><div class="ui-helper-hidden-accessible"><select id="formManterSetor:ativo_input" name="formManterSetor:ativo_input"><option value="">Selecione...</option><option value="true">Sim</option><option value="false" selected="selected">Não</option></select></div>

Como dá para ver no HTML a opção de Não (false) está como selected, sendo que eu não coloquei isso e não quero isso. Como faço para essa opção não vir marcda ou como faço para que outra opção seja a default?

8 Respostas

J

Teste assim:

<p:selectOneMenu id="ativo" value="#{setorController.setor.ativo}" required="true" requiredMessage="Por favor, informe se o setor está ativo."> <f:selectItem itemValue="" itemLabel="Selecione..." selected="true"/> <f:selectItem itemValue="true" itemLabel="Sim"/> <f:selectItem itemValue="false" itemLabel="Não"/> </p:selectOneMenu>

M

provavelmente no seu bean o atributo esta iniciado como false e é do tipo primitivo, o que nao permite nulo.
no caso faça

private Boolean ativo;

get e set
K

porque vc não usa o p:selectBooleanCheckbox ?

M

bem lembrado…
tem o booleanbutton tambem

J

Pessoal,

Obrigado pelos retornos.

Respondendo a todas as sugestões:

  • Colocar o selected=true dentro da tag f:selectItem não funciona, já tinha tentado isso.
    -No meu bean não tenho nada que inicie o atributo como false, assim como no BD, que também não tem valor padrão, já tinha visto isso. Segue o código do meu BEAN;
@Entity
@Table(name = "setor", catalog = "estoque")
public class Setor implements Serializable {
...

@Column(name = "ativo")
private boolean ativo;  

...
 public boolean getAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }
  • Obrigado pela sugestão, vou ver se mudo para p:selectBooleanCheckbox, tinha esquecido disso.

Já posto o retorno.

Desde já agradeço.

Só mais uma dúvida: caso eu quisesse setar no meu bean o value null ou value true como default, para vir selecionado no combobox, como faria?

J

Pessoal,

Tentei com p:selectBooleanButton e também com p:selectOneRadio. Nos dois casos o Não (false) veio como default também. Não gostaria de usar o p:selectBooleanCheckbox, porque a maioria dos usuários ai esquecer de clicar em cima ("checar) quando quiser que ele fique ativo. Um dos motivos de eu ter optado por selectOneMenu foi esse, assim o usuário teria mais facilidade para escolher Sim ou Não, e eu saberia se ele selecionou ou não, além disso, vindo algum valor como padrão,o usuário vai sempre esquecer de alterar e vai salvar com erro, ou seja, vai vir como default false, mas era pra ser true, o usuário não vai lembrar de alterar isso e vai salvar normalmente, futuramente vou ter problemas com isso. Com o selectOneMenu, eu traria o value null como default e obrigaria sempre o usuário a escolher a opção relamente correta e que deseja. Entenderam?

K

é só vc inicializar ele no construtor como true, que vai vir sempre marcado.

J

Então kleberdamasco, valeu pela ajuda, eu fiz isso. O problema é que o atributo ativo é boolean, só aceita true ou false, então eu vou ter sempre um desses valores como default, não tem como eu setar esse atributo com null, para que a opção “Selcione…”, venha marcada no selectOneMenu, com isso o usuário pode relaxar e salvar algo como ativo, quando na verdade não era, e vice-versa, entendeu?

Criado 26 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 8
Participantes 4