`
mywebcode
  • 浏览: 1015195 次
文章分类
社区版块
存档分类
最新评论

struts2無法继承json-default的解决方法

 
阅读更多

struts2的json plugin可以实现struts2和json的完美结合,由于本篇主要是介绍整合过程中遇到的问题,所以编程实现的方法这里就不重复了,具体可以参看struts2的官方文档:http://struts.apache.org/2.2.1.1/docs/json-plugin.html



如果無法继承json-default,网上说了好多方法,什么重写json-default的文件,其实最简单的是把jsonplugin-0.34.jar复制到WEB-INF的lib下,问题解决!










若struts.xml中有如下action定义:

<action name="product_group" class="customers.products" method="getGroups">
    <result type="json">
        <param name="root">groupList</param>
    </result>
</action>


在上面的定义中,action的result的type为json,json plugin就可将action中定义为groupList的field自动转换为json格式数据,并返回给前端UI。

但在deploy后,启动tomcat时却报了There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'?的错误,因为struts2找不到json这个result type的定义。解决方法有下面两种:

1.将当前package的extends属性改为"json-default",即让当前package从josn-default继承而不是struts-default继承;

2.但如果当前package确实无法继承"json-default"的话,还可以在当前package中定义result-type,将json给加进去,如下:

<result-types>
    <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
</result-types>

两种方法的原理:

json这个result type是在json-default (struts2-json-plugin-2.1.8.1.jar\struts-plugin.xml)里面定义的,内容如下(省去了xml和doctype标签):

复制代码
<struts>
    <package name="json-default" extends="struts-default">
        <result-types>
            <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
        </result-types>
        <interceptors>
            <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
        </interceptors>
    </package>
</struts>
复制代码

可见,name为"json"的result type是在json-default中定义的,所以,从json-default继承就可以使用json这个result。另外json-default还定义了一个name为"json"的interceptor。

另外,依json-default的定义来看,方法2中还应该再加一个json的interceptor定义才比较合适。



如果無法继承json-default,网上说了好多方法,什么重写json-default的文件,其实最简单的是把jar包复制到WEB-INF的lib下,问题解决!
分享到:
评论

相关推荐

    Struts2.1.6中关于JSON的配置和使用

    1,需要把jsonplugin-0.33.jar拷贝到Web-INF/lib目录下....2,在struts2.1.6的配置文件中进行配置,就是返回的类型是json,并且要为JSON数据单独创建一个Package,继承的包不再是struts-default,而是json-default

    struts2的rest风格插件实例

    通过 struts.xml、struts.properties 或 web.xml 改变 struts.convention.default.parent.package 常量的值,让支持 REST 风格的 Action 所在的包默认继承 rest-default,而不是继承默认的 convention-default 父包...

    Struts2返回JSON对象.doc

    3. 配置Struts2的`struts.xml`文件,为每个方法指定一个返回类型为JSON的Action。这里需要继承`json-default`包,因为它包含了处理JSON的配置。 ```xml &lt;package name="default" namespace="/json" extends="json-...

    Struts2 返回json对象

    Struts2 返回 JSON 对象 Struts2 是一个基于 MVC 模式的 Java Web 应用程序框架,它提供了一个强大的机制来处理用户的请求和响应。在 Struts2 中,返回 JSON 对象是通过 JSON 插件来实现的,这个插件提供了一个可以...

    ExtJS+struts2+json登陆实例--源码

    在这个例子中,我们看到一个名为"user"的包,它继承自"struts-default",表示使用Struts2的默认配置。"login"动作与类"org.ext.service.loginAction"关联,当用户提交登录表单时,Struts2会调用这个动作类来处理请求...

    Struts2返回JSON对象.docx

    在`struts.xml`中,创建一个名为`default`的包,继承自`json-default`,这意味着所有在这个包下的Action都会默认返回JSON格式的数据。对于每个Action,你可以定义一个`&lt;action&gt;`元素,指定Action名称、类和方法。...

    ext+struts2+json登陆方法.pdf

    在本案例中,我们看到一个使用Ext JS 2.2进行登录实现的方法,结合了Struts2和JSON来处理用户输入和响应。以下是这个登录方法的详细解释: 1. **依赖库**: - `Commons-logging-1.0.4.jar`: Apache Commons ...

    ext+struts2+json登陆方法借鉴.pdf

    - `&lt;package name="user" extends="struts-default"&gt;` 创建了一个名为“user”的包,继承自“struts-default”包,包含默认的配置。 - `&lt;action name="login" class="org.ext.service.loginAction"&gt;` 定义了一个名...

    struts2--ajax.docx

    在Struts的配置文件`struts.xml`中,需要声明一个继承自`json-default`的包,这将启用JSON插件。然后定义一个Action,其结果类型为`json`: ```xml &lt;package name="ajax" extends="json-default"&gt; &lt;action name="...

    jquery与struts2整合

    在Struts2的配置文件(如struts.xml)中,定义一个名为`myajax`的包,继承自`json-default`,以启用JSON支持。然后配置一个Action,名为`myajaxAction`,其类映射为`actions.MyAjaxAction`,并指定结果类型为`json`...

    struts+jquery+json+ajax.pdf

    2. **Struts.xml**:定义了一个名为 "example" 的包,并扩展了 "json-default" 包,配置了一个名为 "login" 的动作,该动作返回 "map" 结果类型,类型为 JSON,通过 "result" 参数将 "Login" 类中的 "result" 属性...

    struts2整合jquery

    创建一个Struts2 Action类,例如`UserAction`,它继承自`ActionSupport`,并包含与数据库交互的属性和方法: ```java public class UserAction extends ActionSupport { private UserBean user; private int ...

    Strust2的json插件使用方案.pdf

    Struts2的JSON插件是实现前后端数据交互的重要工具,尤其在当今Web应用程序中,JavaScript与服务器端的异步通信越来越普遍。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时...

    Struts2 支持REST 代码

    Struts2是一款强大的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)开发模式,使得Web应用的构建更加简洁、高效。REST(Representational State Transfer)是一种架构风格,用于构建可...

    轉載:eclipse手動建立struts2範例

    这通常通过下载Struts2的核心库和其他必要的jar文件完成,如struts2-core、struts2-convention-plugin、struts2-json-plugin等,并将它们放入项目的WEB-INF/lib目录下。此外,也可以使用Maven或Gradle等构建工具来...

    struts2所需jar包

    - `struts2-json-plugin.jar`或`struts2-jackson-plugin.jar`:用于支持JSON格式的数据交换,通常在AJAX或RESTful服务中使用。 3. **配置与初始化**: - `struts-default.xml`和`struts-plugin.xml`是Struts2的...

    完整的Struts2源码

    Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性极高的应用的解决方案。此压缩包文件"struts-2.2.3"包含了Struts2框架的源代码,这将...

    最新struts2.3.jar

    在Struts2的配置文件(如struts.xml或struts-default.xml)中,定义Action的映射: ```xml &lt;result type="dispatcher"&gt;/helloWorld.jsp ``` 此外,Struts2提供了丰富的插件和拦截器,如结果类型插件、验证插件...

    struts2_jar

    2. **配置文件**:主要包括`struts-default.xml`和自定义的`struts.xml`,这些XML文件定义了Action类、结果类型、拦截器栈等配置。在`struts.xml`中,你可以声明Action类、指定URL与Action的映射关系,以及设置结果...

    J2EE的框架搭建 Struts框架的搭建

    - struts2-json-plugin.jar(如果需要JSON支持) - servlet-api.jar(如果你使用的是非容器运行环境) - jstl.jar 和 standard.jar(用于JSTL标签库) 2. **配置Web.xml**:在`web.xml`部署描述符中,你需要配置...

Global site tag (gtag.js) - Google Analytics