2012-12-17 45 views
1

我想从使用Ajax请求的Action中获取值,但是我在使用javascript中的struts标记来显示值时遇到问题。如何在javascript中使用struts标记

Javascript代码:

dojo.xhrPost({ 
      url: "dashboard" 
      ,content: myParameterscomp 
      , handle: function(response, ioargs) { 

       if (ioargs.xhr.status == 200) 
       { 
        var data = "<s:property value='#request.consumptionData'/>" 
        console.log(data); 
       } 

      } 

      ,error: function (data) { 
       handleError(data.description); 
      }   
     }); 

Java代码:

Map request = (Map)context.get("request"); 
request.put("consumptionData", 43); 

我在控制台上获取数据的价值<s:property value='#request.consumptionData'/>而不是。我正在使用struts2。我的JavaScript代码在JSP文件中。任何人都可以告诉我如何显示价值?

+0

只是一个问题。你在你的JSP文件中包含了struts标签库吗? –

+0

不。我在我的父JSP中加载了一个标签库,并且从那里我调用了上面的JSP来在加载到父JSP中时发出AJAX请求。 – Stardust

+0

这不会工作。您需要在JSP中包含taglib,其中标记存在。 –

回答

1

您似乎是从您的主页通过Ajax调用/仪表板页面。并期待它发送您请求属性consumptionData。这不会起作用,因为您的JSP不包含所需的数据。您需要将数据放入JSP中,然后在Ajax中获取相同的数据。将您的响应转换为JSON。这样做的最简单方法是在Ajax响应JSP中添加如下代码。

Dashboard.jsp

{"consumptionData": < "<s:property value='#request.consumptionData'/>"} 

而且在当你通过AJAX加载此JSP主页,你可以分析这个JSON输出,并在JavaScript中使用的数据。

var json = JSON.parse(response); 
var data = eval(json.consumptionData); 
0

浏览器中的代码接受JSON。您可以将请求序列化为JSON并嵌入到JavaScript文件中。例如:

var data = <%= toJson(request.get("consumptionData")) %> 

如果数据是简单地Integer值,你甚至可以直接把值代码:

var data = <%= request.get("consumptionData") %> 

语法可以改变(我不熟悉Struts标签),但这个想法是一样的。