加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何引用带参数Wicket的页面

发布时间:2020-12-15 05:07:02 所属栏目:Java 来源:网络整理
导读:我需要发送Wicket链接(例如通过邮件)在系统中引用实例. 例如,邮件可能包含: 来自:… @ … 至: …@… 主题:订单待定 … 文本… ?点击此处:http://I.dont.care.the.style.of.the.linkPage.OrderDetailPage?orderId=1001 … 文本… 我有两个OrderDetailPag
我需要发送Wicket链接(例如通过邮件)在系统中引用实例.

例如,邮件可能包含:

来自:… @ …
至: …@…
主题:订单待定

… 文本…
?点击此处:http://I.dont.care.the.style.of.the.linkPage.OrderDetailPage?orderId=1001
… 文本…

我有两个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.

       ...
    }
...
}

我不知道如何发送链接,因为,我无法创建一个Bookmarkable链接,因为它寻找默认的构造函数…当然,我没有.

我正在为另一页做的是:

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);

    }

编辑:我读了一些关于“挂载”网址的内容,这可行吗?怎么样?

解决方法

BookMarkablePageLink有2个构造函数:一个用于连接到链接页面的默认构造函数,另一个带有额外参数以提供带有PageParameters的链接,后者将使用PageParameters调用构造函数.

您可以像这样创建链接:

PageParameters pars = new PageParameters();
pars.add("id",12345);
add(new BookmarkablePageLink("id",MyPage.class,pars);

这也适用于setResponsePage方法:

PageParameters pars = new PageParameters();
pars.add("id",12345);
setResponsePage(MyPage.class,pars);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读