Wicket和丰富的ajax网站:最简单的方法?

Wicket和丰富的ajax网站:最简单的方法?,ajax,wicket,rich-internet-application,Ajax,Wicket,Rich Internet Application,我想使用Wicket构建一个应用程序,但我有一些设计师希望编写/维护javascript,他们基本上希望每页有一个JS段和一个全局JS文件。 我认为在wicket中添加javascript最自然的方法是在每个组件(而不是每个页面)中添加javascript,这会给设计人员带来问题(分块javascript,并且必须在java文件中编写)。有没有更好的办法解决这个问题? (当然,我希望在部分刷新后工作正常。) 第二件(相关的)事情是他们希望(实际上我也希望)通过静态链接请求JSON格式的信息,这在

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


第二件(相关的)事情是他们希望(实际上我也希望)通过静态链接请求JSON格式的信息,这在Wicket中可能吗?

第二个问题的快速答案是可能的。用于访问返回JSON数据的资源。

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
,直接从
IRequestTarget解码(RequestParameters参数)
返回
IRequestTarget
,并将其装载到应用程序中


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

我从JSON开始,让我的wicket页面返回JSON,但很快就意识到有更好的工具来完成这项工作,特别是如果您将拥有完整的web服务层。如果你只是需要一点JSON在这里和那里,总是通过GET,那么当然,只要做一个Wicket页面

最后,我和Wicket一起使用。JeSee简化了URL的配置,这些URL可以用不同的HTTP方法(GET/POST/PUT/DELATE)来做不同的事情,也可以很容易地解析查询字符串等等。
只需一点web.xml配置,就可以在同一web应用程序中轻松运行Wicket和Jersey。

您可以轻松使用以下代码与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倍。。。。我一直都在用这个,至少对我来说效果很好。如果您的解决方案不同/更好,我想知道原因。

Hmm,我知道可书签链接。但我不知道如何在这样一个URL上返回JSON,我应该有一个可用于书签链接的页面,对吗?是的,JSON就是我要找的东西(另一个听起来也不错,但很难),而且我对JS文件的想法的确认也很好,谢谢。@sfusseneger我如何访问该页面?!!!我找不到URL!!如果没有HTML,那么该页面的url是什么。它为我返回404:(我已经尝试了我能想到的所有可能的url。例如:localhost:7001/MyApp/JsonReturningPage