加载Wicket BookmarkablePageLink的JQuery Mobile Error

时间:2012-11-15 17:19:39

标签: jquery ajax jquery-mobile jetty wicket

我是JQuery Mobile的新手。我有一个基于Apache Wicket的应用程序,我想尝试使用JQuery Mobile,因此它在移动设备上看起来更令人愉悦。不幸的是,我收到所有页面链接的"Error Loading Page"错误,在切换到JQuery Mobile之前我从未遇到过这些错误。根本原因似乎是HTTP请求中包含的URL。我使用了JQuery Mobile 1.2.0,JQuery 1.8.0,Wicket 1.5.5,使用jetty服务器6.1.26和FireFox 16.0进行了本地测试。以下是代码段:

        <ul data-role="listview" data-theme="b">
          <li><a href="#" wicket:id="metaprofileList" rel="external">List</a>
          </li>
        </ul>

相应的java代码:

    add(new BookmarkablePageLink<MetaprofileListPage>(
            "metaprofileList", MetaprofileListPage.class));

基于上述情况,Wicket正确地将"#"中的href="#"替换为页面所在的真实网址,因此最终的HTML如下所示:

        <ul data-role="listview" data-theme="b">
          <li><a href="com.alcatel_lucent.nms8770.awol.client.web.page.MetaprofileListPage" wicket:id="metaprofileList" rel="external">List</a>
          </li>
        </ul>

单击链接时,Jetty服务器使用以下URL发送以下HTTP请求:

GET http://127.0.0.1:7999/com.alcatel_lucent.nms8770.awol.client.web.page.MetaprofileListPage [HTTP/1.1 404 Not Found 0ms]

这不是MetaprofileListPage的正确URL。在我切换到JQuery Mobile之前,我测试了相同的场景,同一个jetty服务器使用CORRECT url发送以下HTTP请求:

GET http://127.0.0.1:7999/wicket/bookmarkable/com.alcatel_lucent.nms8770.awol.client.web.page.MetaprofileListPage?7 [HTTP/1.1 200 OK 0ms]

我做的唯一更改是从以下位置切换HTML文件中的标题:

<link rel="stylesheet" type="text/css" href="../../css/phone.css" media="only screen and (max-width: 480px)"/>
<link rel="stylesheet" type="text/css" href="../../css/default.css" media="only screen and (min-width: 1025px)"/>
<link rel="stylesheet" type="text/css" href="../../css/portrait.css" media="all and (max-device-width: 1024px) and (orientation:portrait)"/>
<link rel="stylesheet" type="text/css" href="../../css/landscape.css" media="all and (max-device-width: 1024px) and (orientation:landscape)"/>
<meta name="viewport" content="user-scalable=no, width=device-width"/>

对于标准样板文件jquery mobile包括:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />  
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>  
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>        

我现在已经苦苦挣扎了两个星期了:-(我需要做些什么才能让JQuery Mobile加载正确的网址/页面?请帮助!!非常感谢!!

1 个答案:

答案 0 :(得分:0)

您可能装载您的可收藏页面在一个众所周知的短片段下,例如

您通常在覆盖Application#init方法时执行此操作,例如:

@Override
protected void init() {
    mountPage("/cheeses/${cheese}", CheesePage.class);
    mountPage("/profile", MyProfile.class);
}

这至少会删除这些包名。