2

我想使用 Wicket 来构建一个应用程序,但我有一些设计师想要编写/维护 javascript,他们基本上希望每页 1 个 JS 段和一个全局 JS 文件。我认为在 wicket 中添加 javascript 最自然的方法是按组件(而不是按页面)添加它,这会给那些设计者带来问题(分段的 javascript,并且必须将其编写在 java 文件中)。有没有更好的方法来解决这个问题?(当然,我希望在部分刷新后一切正常。)

他们想要的第二个(相关)事情(实际上我想要)是通过静态链接请求 JSON 格式信息的可能性,这在 Wicket 中是否可行?

4

4 回答 4

3

我从让检票口页面返回 JSON 开始使用 JSON,但很快意识到有更好的工具来完成这项工作,特别是如果您将拥有完整的 Web 服务层。如果你只是需要一点点 JSON,总是通过 GET,那么当然,只需创建一个 Wicket 页面。

我最终与杰克逊一起使用泽西和威克特。Jersey 简化了 URL 的配置,这些 URL 可以使用不同的 http 方法(GET/POST/PUT/DELETE)执行不同的操作,以及轻松解析查询字符串等。我会考虑采用这条路线来满足更重的 JSON 需求。

您可以通过一点 web.xml 配置轻松地在同一个 Web 应用程序中运行 Wicket 和 Jersey。

于 2010-06-02T16:08:32.373 回答
1

对您的第二个问题的快速回答是肯定的,这是可能的。使用可收藏链接访问返回 JSON 数据的资源。

于 2010-05-17T07:15:22.307 回答
1

Wicket 内置的 AJAX 支持始终是有状态的,因此可以通过不断变化的 URL 进行访问。如果您的设计人员不打算使用 Wicket 的 JS 库,那么挂载 JSON 页面非常简单:

public class JsonReturningPage extends WebPage {
  public JsonReturningPage(PageParameters params) {
    String json = "{foo: 4711}";
    IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", json);
    getRequestCycle().setRequestTarget(t);
  }
}

或者,您也可以实现自己AbstractRequestTargetUrlCodingStrategy的直接返回IRequestTargetfromIRequestTarget decode(RequestParameters params)并将其安装在您的应用程序中。

关于 JS 文件,我会尝试教育他们每个组件使用一个文件。这当然具有更少的复制粘贴代码和更简单的维护的优点。此外,我当然不鼓励 Java 代码中的 JS。通常只需要将数据或配置传递给 JS ,无论是作为变量定义还是方法调用。由于这些数据通常使用 Java 并且 JS 是由设计师编写的,因此现在是设计师和程序员合作的时候了。

于 2010-05-17T08:00:26.593 回答
1

您可以轻松地使用以下代码与 Wicket 进行动态通信:

AbstractDefaultAjaxBehavior callme = new AbstractDefaultAjaxBehavior(){
        @Override
        protected void respond(AjaxRequestTarget target) {
        }
};
page.add(callme);


//From any ajaxrequesttarget you can simply append the following code:
target.appendJavascript("wicketAjaxGet('"+callme.getCallbackUrl()+");");

这样你就可以有一个 ajaxlink 等...将 ajaxrequest 传输到 Wicket 端。如果您想传递数据(尽管静态链接听起来不像),请执行以下操作:

"wicketAjaxGet('"+callme.getCallbackUrl()+"&x='+value_to_pass_back''";
//to Read the value in the respond:
String x = RequestCycle.get().getRequest().getParameter("x");

所以回调的 url 是动态生成的(因为回调 url 是特定于会话的),但它的形成方式与任何其他 url 一样......

对我来说,这比在 wicket 上构建 JSON 系统而不是使用内置的 JSON 系统要简单 10 倍……我一直都在使用它,至少它对我很有用。如果您的解决方案不同/更好,我想知道为什么。

于 2010-06-07T23:34:21.647 回答