selectItem está vindo com o value false como default

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?

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>

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

porque vc não usa o p:selectBooleanCheckbox ?

bem lembrado…
tem o booleanbutton tambem

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?

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?

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

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?