如何在javascript中使用struts标记

时间:2012-12-17 09:05:49

标签: java javascript struts2 struts

我正在尝试使用Ajax请求从Action中获取价值,但是我在使用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'/>,而不是 43 。我正在使用struts2。我的javascript代码在JSP文件中。有谁能告诉我如何才能显示价值?

2 个答案:

答案 0 :(得分:1)

您似乎是通过主页上的Ajax调用/ dashboard页面。并期望它向您发送请求属性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);

答案 1 :(得分:0)

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

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

如果数据是简单的Integer值,您甚至可以直接将值放在代码中:

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

语法可能有所不同(我不熟悉struts标签),但想法是一样的。