【问题标题】:How to send content from Freemarker to java by request?如何通过请求将内容从 Freemarker 发送到 java?
【发布时间】:2016-05-22 09:54:37
【问题描述】:

我正在尝试将信息从 FreeMarker 模板发送到我的 Java 模型类。

我试过这个:

//my array of string casted in a string
var pais = selected.join();

request.setAttribute(pais, "paises");

好的,现在我正在尝试在我的 Java 类中收集这些内容:

String paises = MgnlContext.getAttribute("paises"); 

但它不起作用。我尝试了其他类似的方法:

Stirng paises = MgnlContext.getInstance().getAttribute("paises"); 

但它总是返回 null。

【问题讨论】:

    标签: java request freemarker magnolia


    【解决方案1】:

    第一个部分看起来不像 freemarker,而更像是 JavaScript,所以也许这就是你的问题。虽然 freemarker 指令在服务器端执行,但由 freemarker 生成的 html 和 Js 在客户端执行,因此没有 Ajax 调用,Js 无法与服务器对话(因此无法与模型类对话)。

    如果您真的对将某些内容从 freemarker 传递到 java 模型感兴趣,那么模型会直接公开。您可以简单地在 java 模型中添加方法并从 freemarker 模板中调用它,例如

    ${model.myMethod(someParam)}
    

    HTH,
    一月

    【讨论】:

      【解决方案2】:

      解决方案(通过 ajax 发送信息):

      首先通过 javscript 获取值:

      [#assign cpathx = ctx.contextPath]
      [#assign url = model.getUrl() /] 
      var field = $('#key').val();
      var calin = $('#calendarIni').val();
      var calfin = $('#calendarFin').val();
      var pais = selected.join();
      var url = '${cpathx}${url}?paises='+pais+'&palabra='+field+'&calendarini='+calin+'&calendarfin='+calfin;
          jQuery.post(url ,function(data) {
          jQuery('#ajax').html(data);
        });
      

      现在我们可以在java中收集信息了:

      String paises = MgnlContext.getWebContext().getAttribute("paises");
      String queryString = MgnlContext.getWebContext().getAttribute("palabra");
      String dateStart = MgnlContext.getWebContext().getAttribute("calendarini");
      String dateEnd = MgnlContext.getWebContext().getAttribute("calendarfin");
      

      【讨论】:

        猜你喜欢
        • 2011-04-14
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多