Problema com CheckBox

30 views
Skip to first unread message

Diogo Prosoft

unread,
Nov 18, 2009, 5:53:29 PM11/18/09
to Wicket em Português
Galera estou querendo add um check na minha pagina mais esta dando um
erro:

Meu código:
ListView datas = new ListView("datas", teste) {

@Override
protected void populateItem(ListItem item) {
item.add(new Label("data",
item.getDefaultModelObjectAsString()));
item.add(new CheckBox("check", new PropertyModel
("check",item.getDefaultModelObjectAsString())));

}
};
add(datas);

Erro:
Root cause:

org.apache.wicket.WicketRuntimeException: The component(s) below
failed to render. A common problem is that you have added a component
in code but forgot to reference it in the markup (thus the component
will never be rendered).

1. [MarkupContainer [Component id = check]]
2. [MarkupContainer [Component id = check]]
3. [MarkupContainer [Component id = check]]
4. [MarkupContainer [Component id = check]]
5. [MarkupContainer [Component id = check]]
6. [MarkupContainer [Component id = check]]
7. [MarkupContainer [Component id = check]]
8. [MarkupContainer [Component id = check]]
9. [MarkupContainer [Component id = check]]
10. [MarkupContainer [Component id = check]]
11. [MarkupContainer [Component id = check]]
12. [MarkupContainer [Component id = check]]
13. [MarkupContainer [Component id = check]]
14. [MarkupContainer [Component id = check]]
15. [MarkupContainer [Component id = check]]
16. [MarkupContainer [Component id = check]]
17. [MarkupContainer [Component id = check]]


O que está acontecendo?

Adriano dos Santos Fernandes

unread,
Nov 18, 2009, 6:04:37 PM11/18/09
to wicke...@googlegroups.com
Diogo Prosoft wrote:
> Galera estou querendo add um check na minha pagina mais esta dando um
> erro:
>
Manda o html também.


Adriano

Diogo Schmidt Soares

unread,
Nov 18, 2009, 6:09:37 PM11/18/09
to wicke...@googlegroups.com
Esse é meu html:
<body>
      <ul wicket:id="datas">
          <input type="checkbox" wicket:id="check"/><li wicket:id="data"></li>
     </ul>
</body>

alterei o java para:

     ListView datas = new ListView("datas", teste) {

            @Override
            protected void populateItem(ListItem item) {
                item.add(new Label("data", item.getDefaultModelObjectAsString()));
                item.add(new Check("check", item.getModel()));

            }
        };
        add(datas);

E deu esse erro agora:

WicketMessage: Check component [37:datas:0:check] cannot find its parent CheckGroup

Root cause:

org.apache.wicket.WicketRuntimeException: Check component [37:datas:0:check] cannot find its parent CheckGroup
at org.apache.wicket.markup.html.form.Check.getGroup(Check.java:136)
at org.apache.wicket.markup.html.form.Check.onBeforeRender(Check.java:149)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1061)


Qual dois dois jeitos está certo de fazer, acho que nenhum pois eles nao funcionam, hehehe





2009/11/18 Adriano dos Santos Fernandes <adri...@gmail.com>



--
Att,

jun...@infobusiness.com.br

unread,
Nov 18, 2009, 6:12:07 PM11/18/09
to wicke...@googlegroups.com
Diodo, parece estar faltando citar o wicket:id correspondente (ao check)
na parte html do teu código.
Experimenta usar assim:

<wicket:panel>
<ul wicket:id="datas">
<li wicket:id="data"></li>
<li wicket:id="check"></li>
</ul>
</wicket:panel>

jun...@infobusiness.com.br

unread,
Nov 18, 2009, 6:16:41 PM11/18/09
to wicke...@googlegroups.com
Experimenta colocar os teus dois input dentro da tab <li>....

<wicket:panel>
      <ul wicket:id="datas">
          <li>
              <input wicket:id="data"/>

              <input type="checkbox" wicket:id="check"/>
          </li>
     </ul>
</wicket:panel>

Diogo Schmidt Soares

unread,
Nov 18, 2009, 6:21:49 PM11/18/09
to wicke...@googlegroups.com
Obrigado pela ajuda Junior, fiz a alteração no Html, porém não tive sucesso, acho que o problema esta no codigo java mesmo.
Não estou conseguindo setar ele, veja como estou fazendo...
Codigo java:

        ListView datas = new ListView("datas", teste) {

            @Override
            protected void populateItem(ListItem item) {
                item.add(new Label("data", item.getDefaultModelObjectAsString()));
                item.add(new org.apache.wicket.markup.html.form.Check("check", item.getModel()));

            }
        };
        add(datas);

Meu Html:

      <ul wicket:id="datas">
          <li>
              <input wicket:id="data"/>

              <input type="checkbox" wicket:id="check"/>
          </li>
     </ul>

Erro:

WicketMessage: Check component [5:datas:0:check] cannot find its parent CheckGroup

Root cause:

org.apache.wicket.WicketRuntimeException: Check component [5:datas:0:check] cannot find its parent CheckGroup


at org.apache.wicket.markup.html.form.Check.getGroup(Check.java:136)
at org.apache.wicket.markup.html.form.Check.onBeforeRender(Check.java:149)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1061)

at org.apache.wicket.Component.beforeRender(Component.java:1095)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1727)


Parece que nao esta populando, porem o data esta vindo certinho...






--
Att,

Bruno Borges

unread,
Nov 18, 2009, 6:25:18 PM11/18/09
to wicke...@googlegroups.com
Voce precisa definir um CheckGroup...

[]s
Bruno Borges
blog.brunoborges.com.br
+55 21 76727099

"The glory of great men should always be
measured by the means they have used to
acquire it."
- Francois de La Rochefoucauld


2009/11/18 Diogo Schmidt Soares <diogop...@gmail.com>

Diogo Schmidt Soares

unread,
Nov 18, 2009, 6:32:05 PM11/18/09
to wicke...@googlegroups.com
Bruno acho que não vai precisar fiz umas altereções seguindo uns exemplos na net.
Criei um bean para receber os dados do check.
Entao meu codigo ficou assim:

        ListView datas = new ListView("datas", teste) {

            @Override
            protected void populateItem(ListItem item) {
                item.add(new Label("data", item.getDefaultModelObjectAsString()));

                Check check = (Check)item.getModelObject();
                item.add(new CheckBox("check", new PropertyModel(check, "selected")));

            }
        };
        add(datas);

E meu bean ficou assim:
    private String name;
    private Boolean selected = Boolean.FALSE;

gets and seters...

O erro agora esta assim, bom se nao tivesse o erro, heheh

WicketMessage: Error attaching this container for rendering: [Page class = br.com.basecompany.modulo.teste.ListaConsulta, id = 14, version = 0]

Root cause:

java.lang.ClassCastException: java.lang.Integer cannot be cast to br.com.basecompany.componente.Check
at br.com.basecompany.modulo.teste.ListaConsulta$1.populateItem(ListaConsulta.java:67)
at org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:576)

Esta pedindo um Cast mais aonde eu coloco ele?


2009/11/18 Bruno Borges <bruno....@gmail.com>



--
Att,

Bruno Borges

unread,
Nov 18, 2009, 6:36:08 PM11/18/09
to wicke...@googlegroups.com
A propriedade do seu pojo tah definido como int. Deveria ser um boolean... :-)

[]s
Bruno Borges
blog.brunoborges.com.br
+55 21 76727099

"The glory of great men should always be
measured by the means they have used to
acquire it."
- Francois de La Rochefoucauld
Sent from Rio de Janeiro, Brasil

Adriano dos Santos Fernandes

unread,
Nov 18, 2009, 6:57:03 PM11/18/09
to wicke...@googlegroups.com
Não. O erro é no cast que vc colocou: (Check)item.getModelObject();

Vc tá misturando componente (Check) com models.

Ainda não entendi porque não funcionou com o CheckBox. O CheckBox não
precisa de CheckGroup. Talvez esteja relacionado a vc não ter usado um Form.


Adriano

Alioth Bolaños

unread,
Nov 18, 2009, 8:25:25 PM11/18/09
to wicke...@googlegroups.com
Colega,
Segundo o erro você esqueceu de adicionar o wicket:id "check" no html.

2009/11/18 Diogo Prosoft <diogop...@gmail.com>

Alioth Bolaños

unread,
Nov 18, 2009, 8:52:41 PM11/18/09
to wicke...@googlegroups.com
Colega foi mal, não tinha olhado o histórico do email.

Tenta com este codigo:


   ListView datas = new ListView("datas", teste) {
       
        @Override
        protected void populateItem(ListItem item) {           
            TeuBean itemAtual = (TeuBean) item.getModelObject();
            item.add(new Label("data", itemAtual.getDefaultModelObjectAsString()));
            item.add(new CheckBox("check", new PropertyModel(itemAtual, "selected")));
        }
    };
   
    add(datas);


2009/11/18 Alioth Bolaños <alio...@gmail.com>

Rubens Melo

unread,
Nov 19, 2009, 11:05:52 AM11/19/09
to wicke...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages