我们有一个现有的Java Wicket 1.4应用程序,它广泛使用HybridUrlCodingStrategy:
mount(new HybridUrlCodingStrategy("/myurl", MyPage.class));
Run Code Online (Sandbox Code Playgroud)
这导致我们的URL看起来像:
http://host/myurl/paramName1/paramValue1/paramName2/paramValue2
Run Code Online (Sandbox Code Playgroud)
我想在Wicket 1.5中维护这种URL格式,但是已经删除了HybridUrlCodingStrategy.在wicket 1.5中,页面安装为:
mountPage("/myurl", MyPage.class);
Run Code Online (Sandbox Code Playgroud)
这导致传统的URL如下:
http://host/myurl?paramName1=paramValue2¶mName2=paramValue2
Run Code Online (Sandbox Code Playgroud)
我已经读过我们应该使用MountedMapper类,但是看看Wicket 1.5示例,API文档和源代码,我仍然不清楚如何使用MountedMapper获得与HybridUrlCodingStrategy相同的行为.
有谁知道如何做到这一点?
小智 2
也许是这样的:
mountPage("/myurl/paramName1/${paramValue1}/paramName2/${paramValue2}", MyPage.class)
Run Code Online (Sandbox Code Playgroud)
会工作?当然,您必须手动指定参数,这可能需要更多工作。MountedMapper类 javadoc解释了如何使用参数。
我能想到的另一个选择是(注意:这未经测试):
class MyPageParametersEncoder implements IPageParametersEncoder() {
public PageParameters decodePageParameters(Request request)
{
PageParameters parameters = new PageParameters();
int i = 0;
for (Iterator<String> segment = request.getUrl().getSegements().iterator(); segment.hasNext()) {
String key = segment.next();
String value = segment.next();
parameters.add(key, value);
}
return parameters.isEmpty() ? null : parameters;
}
public Url encodePageParameters(PageParameters pageParameters)
{
Url url = new Url();
for (PageParemeters.NamedPair pair : pageParameters.getAllNamed() {
url.getSegments().add(pair.getKey());
url.getSegments().add(pair.getValue());
}
return url;
}
}
mount(new MountedMapper("/myurl/", MyPage.class, new MyPageParametersEncoder());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |