I'm not fluent in Scala but it seems you're adding additional components 
without reason:

private class TextDesc(id: String, workSheet: WorkSheet)
 extends TextField[String](id) {
   add(new TextField("textField", new Model[String]() {

TextDesc *is* a textfield, why are you adding another textfield to it?

private class DropDownChoiceCustomer(id: String, listCustomer: List[Customer], 
workSheet: WorkSheet)
 extends DropDownChoice[String](id) {
   add(new DropDownChoice("customerSelection", listCustomer,
     new ChoiceRenderer[Customer]("name")) {

DropDownChoiceCustomer *is* a dropdownchoice already, why are you adding 
another one to it?

Regards
Sven


On 05/05/2013 02:26 AM, Bruno Moura wrote:
I need to add components in a listView and associate all of them with a
model,for allow keep the state of each object saved in this listView. I'm
using wicket 1.4 with scala.
The code is showed bellow, isn't a short piece of code but I tried to keep
it simple as possible


add(new ListView[WorkSheet]("listWorkSheet", listData) {

     override protected def onBeforeRender() {
       super.onBeforeRender()
     }

     def populateItem(item: ListItem[WorkSheet]) = {
       var workSheet = item.getModelObject()

       // Render normally
       item.add(new LinkDate("initDate", workSheet, 1))

       // render normally
       item.add(new TextField("description"))
       // error on Render Page
       item.add(new TextDesc("description", workSheet))

       val listCustomer: java.util.List[Customer] = customerDAO.listCustomers

       // render normally
       item.add(new DropDownChoice("customerSelection", listCustomer, new
ChoiceRenderer[Customer]("name")))
       // error on Render Page
       item.add(new DropDownChoiceCustomer("customerSelection",
listCustomer, workSheet))

}

// Render normally, works
private class LinkDate(id: String, workSheet: WorkSheet, type: Int) extends
Link[String](id) {

   setEnabled(false)
   add(new Label("label", new Model[String]() {
     override def getObject(): String = {
       var result = ""
       if (type == 1) {
           result = workSheet.initDate.toString("dd/MM/YYYY HH:mm:ss")
       }
       return result
     }
   }))

   def onClick() {}
}

// doesn't work
private class TextDesc(id: String, workSheet: WorkSheet) extends
TextField[String](id) {

   add(new TextField("textField", new Model[String]() {
     override def getObject(): String = {
       var result = ""
       if (result.length != 0) {
           result = workSheet.description
       }
       return result
     }
   }))
}

// doesn't work
private class DropDownChoiceCustomer(id: String, listCustomer:
java.util.List[Customer], workSheet: WorkSheet) extends
DropDownChoice[String](id) {

     add(new DropDownChoice("customerSelection", listCustomer, new
ChoiceRenderer[Customer]("name")) {
       protected override def wantOnSelectionChangedNotifications: Boolean =
{
         true
       }
       protected override def onSelectionChanged(customerSelection:
Customer) {
         System.out.println("selected: " + customerSelection.id)
       }
     })
}

// I got the error messages bellow

WicketMessage: 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 = textField]]
2. [MarkupContainer [Component id = textField]]

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 = textField]]
2. [MarkupContainer [Component id = textField]]

at org.apache.wicket.Page.checkRendering(Page.java:1201)
at org.apache.wicket.Page.renderPage(Page.java:941)
at
org.apache.wicket.protocol.http.WebRequestCycle.redirectTo(WebRequestCycle.java:201)


WicketMessage: 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 = customerSelection]]
2. [MarkupContainer [Component id = customerSelection]]

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 = customerSelection]]
2. [MarkupContainer [Component id = customerSelection]]


// the markup

<TD>
    <SELECT wicket:id="customerSelection" name="id"></SELECT>
</TD>
<TD><INPUT wicket:id="description" type="text" name="obs" value="_"/></TD>

If someone could help me I'll appreciate, thanks.

Bera



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to