Мне нужно отправить ссылки Wicket (например, через почту), которые ссылаются на экземпляры в системе.
Например, почта может содержать:
From: ... @... To: ... @ ... Тема: отложенный ордер
... txt ... Нажмите здесь, чтобы перейти: http://I.dont.care.the.style.of.the.linkPage.OrderDetailPage? OrderId = 1001 ... txt...
У меня есть два конструктора этого OrderDetailPage
public class OrderDetailPage extends BasePage {
public OrderDetailPage(PageParameters parameters){
this(OrderRepository.getById(parameters.getAsInteger("orderId")), null);
}
public OrderDetailPage(Order order, WebPage back) {
super(new CompoundPropertyModel<Order>(order));
//Renders the page for the order received.
//back is the page we came from. Null hides link.
...
}
...
}
Я не знаю, как отправлять ссылки, потому что я не могу создать закладку, потому что она ищетконструктор по умолчанию ... и, конечно, у меня его нет.
Что я делаю для другой страницы:
final PageParameters pars = new PageParameters();
pars.add("orderId", "1001");
BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>("alink", OrderDetailPage.class, pars);
link.add(new Label("id", "1001"));
add(link);
Разметка:
<li><a href="#" wicket:id="alink"><span wicket:id="id"/></a></li>
Сгенерированный URL-адрес
http://localhost:8080/wicket/bookmarkable/packagePath.OrderDetailPage?orderId=1001
Это нормально, но, тем не менее, не вызывает конструктор «параметров».
ИСПРАВЛЕНИЕ:
Я исправляю это, ноЯ знаю, что решение НЕ в порядке.
public OrderDetailPage() {
this(WicketApplication.orderRepository.get(Integer
.parseInt(RequestCycle.get().getRequest()
.getRequestParameters().getParameterValue("orderId").toString())),
null);
}
РЕДАКТИРОВАТЬ: я читал что-то о "монтировании" URL, может ли это работать?Как?