当前位置: 首页 > news >正文

struts2中使用ajax的问题

一般步骤:

1,使用struts2-json-plugin-2.1.8.1.jar,导入或者依赖这个jar。

2,这个jar包中的struts-plugin.xml,提供了json的相关配置。

<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"/>
            <interceptor name="jsonValidation" class="org.apache.struts2.json.JSONValidationInterceptor"/>

            <!-- Sample JSON validation stack -->
            <interceptor-stack name="jsonValidationWorkflowStack">
                <interceptor-ref name="basicStack"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel</param>
                </interceptor-ref>
                <interceptor-ref name="jsonValidation"/>
                <interceptor-ref name="workflow"/>
            </interceptor-stack>

        </interceptors>

    </package>
</struts>

在需要使用ajax的地方的相关struts的配置文件中,包继承json-default,result的type为json。比如

  <package name="userjson" namespace="/" extends="json-default">
      <action name="userJSONAction_*" method="{1}" class="userAction">
          <result type="json"></result>
      </action>
  </package>

3,在action中,对于需要返回的json字符串定义私有属性,并添加get方法。比如,private String msg;public String getMsg(){return this.msg;}

需要注意的问题,这个也是struct2使用ajax的缺点。不管采用$.post或者$.ajax方法,在客户端无法捕获服务器端产生的异常或错误。原因是,structs2对于服务端产生错误的处理是将产生错误的模版页面返回给客户端并返回客户端。

相关文章:

  • LeetCode(9)判断回文数
  • LeetCode(14)获取字符串数组中字符串的公共前缀
  • LintCode(632)查找二叉树中值最大的节点
  • LeetCode(20)判断字符串合法括号
  • spring整合jbpm的简述
  • nginx反向代理tomcat一段时间后出现的ERR_CONTENT_LENGTH_MISMATCH异常
  • cas简介
  • [one_demo_15]模拟交通灯管理系统
  • jquery easyui datagrid columns日期格式化问题
  • jquery使用$(xx).text()与字符串比较,明明看着相等,结果却为false
  • 联合使用jsp标签和struts的标签在jsp页面获取当前时间
  • 从iframe框架进入登录页面时跳出iframe到顶层页面
  • springboot简介
  • jpa
  • LintCode(22)将一个嵌套集合按照原顺序处理为Integer集合
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Angular4 模板式表单用法以及验证
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Invalidate和postInvalidate的区别
  • iOS 系统授权开发
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java Agent 学习笔记
  • laravel with 查询列表限制条数
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Promise面试题2实现异步串行执行
  • spring security oauth2 password授权模式
  • Zsh 开发指南(第十四篇 文件读写)
  • 分类模型——Logistics Regression
  • 构建工具 - 收藏集 - 掘金
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 走向全栈之MongoDB的使用
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (python)数据结构---字典
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Sublime Text3配置Lua运行环境
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .describe() python_Python-Win32com-Excel
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core WebAPI中封装Swagger配置
  • .Net Web项目创建比较不错的参考文章
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET/C# 使窗口永不获得焦点
  • .NetCore实践篇:分布式监控Zipkin持久化之殇