struts 2和json插件的问题

时间:2010-07-13 23:18:13

标签: apache json struts2

我正在使用struts 2(json-lib-2.1.jar)附带的json插件,并尝试按照网站进行设置。

这是我的struts.xml

<struts>
   <package name="example"  extends="json-default">
      <action name="AjaxRetrieveUser" class="actions.view.RetrieveUser">
         <result type="json"/>
      </action>
   </package>
</struts>

但是我收到了这个警告: 严重:无法找到父包json-default

我还有别的事吗?

编辑:

我将此方法添加到我的RetrieveUser:

public Map<String,Object> getJsonModel()
{
    return jsonModel;
}

我的struts.xml看起来像这样:

<struts>
  <package name="example"  extends="json-default">
     <action name="AjaxRetrieveUser" class="actions.view.RetrieveUser">
        <result type="json"/>
        <param name="root">jsonModel</param>
     </action>
  </package>
</struts>

但是,我认为响应不是从RetrieveUser类到javascript。我正在使用firebug,没有请求被发送。

1 个答案:

答案 0 :(得分:0)

我相信net.sf.json-lib只是一个工具集,您可以在Java中使用它来构建支持JSON的对象,适合通过您描述的操作返回。

可能你需要包含struts-json-plugin - 确保它的版本符合你的struts版本。

我还注意到,在写入时,您的操作将尝试返回序列化的RetrieveUser。我已经完成/看到的大多数实现通过添加

来指定要返回的根对象
<param name="root">jsonUser</param>

在标签下,并在RetrieveUser中定义此方法

public Map<String, Object> getJsonUser()

[这在Sruts2文档中提到]。希望有所帮助。

[edit]我使用Map - 您也可以使用json-lib提供的对象结构。


回复:你的编辑。可能需要看到你的调用javascript。也许我会建议你确保你既有成功又有错误处理程序。你可以调试/登录以显示在java中调用该方法吗?你的日志显示什么吗?这通常是某种错误......