Hi,
I would like to do the same page as the Wicket - example source code:
- A list of element on the left side
- A main page wich displays the details of the selected element
My problem is that the element is correctly taken from database but not
displayed.
Thanks,
Here is my code :
package com.fred.micro.web;
import com.fred.micro.AbstractBasePage;
import com.fred.micro.common.TextilMultiLineLabel;
import org.apache.wicket.markup.repeater.Item;
import com.fred.micro.domain.Law;
import com.fred.micro.domain.LawNorm;
import com.fred.micro.services.MicrochangesService;
import com.fred.micro.web.model.DomainModelIteratorAdaptor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.repeater.RefreshingView;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
/**
* Homepage
*/
public class LawView extends AbstractBasePage {
private static final long serialVersionUID = 1L;
// TODO Add any page properties or variables here
/**
* Constructor that is invoked when page is invoked without a
session.
*
* @param parameters
* Page parameters
*/
@SpringBean
private MicrochangesService service;
public LawView(final PageParameters parameters) {
super();
//add(new DataView("laws", new LawProvider()), 1);
//List<Law> listLaws = service.findAllLaws();
RefreshingView listView = new RefreshingView("laws"){
@Override
protected Iterator getItemModels() {
return new DomainModelIteratorAdaptor<Law>(service
.findAllLaws().iterator()) {
@Override
protected IModel model(Object object) {
return new CompoundPropertyModel((Law) object);
}
};
}
public void populateItem(final Item item) {
final Law law = (Law) item.getModelObject();
//item.add(new Label("lawUniqueId",
String.valueOf(law.getId()) ));
AjaxFallbackLink link = new
AjaxFallbackLink("linkViewLaw") {
@Override
public void onClick(AjaxRequestTarget target) {
if(target != null) {
super.onClick();
Law newLaw = service.getLaw(law.getId());
target.addComponent(new LawPanel("lawPanel",
newLaw));
renderComponent();
}
}
};
link.add(new Label("lawId", law.getLawArticle() + " - "
+ law.getLawArticleFirstArg() + " - " + law.getLawArticleSecondArg()));
item.add(link);
}
};
add(listView);
add(new LawPanel("lawPanel", service.findAllLaws().get(0)));
setOutputMarkupId(true);
}
}
<!--
<wicket:extend>
<div id="center" class="column">
<div id="content">
<div wicket:id="lawPanel" id="lawPanel">
lawPanel
</div>
</div>
</div>
<div id="left" class="column">
<h2>
Liste des lois
</h2>
<ul wicket:id="laws">
<li>
<a wicket:id="linkViewLaw" href="#">
<span wicket:id="lawId">lawId</span>
</a>
</li>
</ul>
</div>
<div id="right" class="column">
</div>
</wicket:extend>
-->
MICHAEL