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

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 in action中文版

    11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...

    搭建EXTJS和STRUTS2框架(ext和struts2简单实例)

    当EXTJS发起请求时,STRUTS2会调用这个方法并返回JSON数据。 在EXTJS端,我们可以创建一个简单的组件,如表格,通过Ajax请求获取STRUTS2返回的JSON数据,并将其填充到表格中。EXTJS提供了丰富的组件库和数据绑定...

    SSH框架配置步骤.docx

    1. 引入Struts2必需的jar包:struts2-core.jar、ognl.jar、struts2-convention-plugin.jar、struts2-json-plugin.jar、struts2-spring-plugin.jar。 2. 修改WEB-INF/web.xml,添加Struts2过滤器配置: ```xml ...

    easyui datagrid+SSH集成项目问题

    创建一个新的package,例如`bps`,并让它继承`json-default`,这样就可以处理JSON相关的动作。在`action`标签内配置`result`类型为`json`,并设置`param name="root"`来指定要返回给前端的数据对象。 2. **Action中...

    struct2大纲整理1

    - Struts2具有良好的扩展性,可以通过插件机制添加新的功能,如Struts2-dojo-plugin、Struts2-json-plugin等。 以上就是Struts2的关键知识点,包括其核心机制、配置、Action映射、页面标签以及拦截器的使用。这些...

    JSP Struts过滤xss攻击的解决办法

    &lt;package name="default" namespace="/" extends="struts-default, json-default"&gt; 此处填写拦截器类名"&gt; &lt;interceptor-stack name="myDefault"&gt; &lt;interceptor-ref name="xssInterceptor"&gt;&lt;/interceptor-ref&gt; ...

    SSH注解-配置方式

    `@ParentPackage`用来指定当前Action继承的包配置,例如`"json-default"`表明这个Action将使用默认的JSON结果类型。`@Results`注解定义了不同的结果类型,`@Result`定义了特定名称的结果,如`Action.INPUT`和`Action...

Global site tag (gtag.js) - Google Analytics