struts中实现ajax的配置信息

基于Struts2框架下实现Ajax有两种方式,第一种是原声的方式,另外一种是struts2自带的一个插件。

js部分调用方式是一样的:

JS代码:

 1 function testAjax() {
 2
 3     var $userNameInput = $("#ajax_username");
 4     var userName = $userNameInput.val();
 5
 6     $.ajax({
 7         url : "originAjax.action",
 8         type : "GET",
 9         data : "ajaxField=" + userName,
10         success : function(data, textStatus) {
11             alert(data);
12         }
13     });
14 }

第一种原生的实现方式:

Action中创建一个方法:

    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void checkUserName() throws IOException {

        HttpServletResponse response = ServletActionContext.getResponse();
        PrintWriter writer = response.getWriter();
        writer.print("hello " + username);
        writer.flush();
        writer.close();
    }

struts.xml中配置:

<action name="originAjax" class="TestAction" method="checkUserName" />  

这种方式不太推荐使用。

这里重点讲解下第二种方式:

1.引入struts2-json-plugin-2.5.2.jar

2.Action中添加类似的如下代码:

private String result;
public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }
/**
     *
     * AJAX for check MerchantAccount start
     *
     * */
    private String merchantAccount;

    public String getMerchantAccount() {
        return merchantAccount;
    }

    public void setMerchantAccount(String merchantAccount) {
        this.merchantAccount = merchantAccount;
    }

    // AJAX for check Merchant
    public String checkMerchantAccountMethod() throws IOException {

         AppResultJsonBean ajaxResultJsonBean = new AppResultJsonBean();

        if (StarCloudStringUtils.isEmpty(merchantAccount)) {

            ajaxResultJsonBean.setIsOK(false);
            ajaxResultJsonBean.setData(null);
            ajaxResultJsonBean.setResultCode(-1);
            ajaxResultJsonBean.setResultMessage("商家账号不能为空");
            ajaxResultJsonBean.setOther(null);

            JSONObject ajaxResultJsonData = JSONObject
                    .fromObject(ajaxResultJsonBean);

            this.result = ajaxResultJsonData.toString();

            return SUCCESS;
        }

        if (!StarCloudStringUtils.isMobile(merchantAccount)) {

            ajaxResultJsonBean.setIsOK(false);
            ajaxResultJsonBean.setData(null);
            ajaxResultJsonBean.setResultCode(-2);
            ajaxResultJsonBean.setResultMessage("商家账号格式不合法");
            ajaxResultJsonBean.setOther(null);

            JSONObject ajaxResultJsonData = JSONObject.fromObject(ajaxResultJsonBean);

            this.result = ajaxResultJsonData.toString();

            return SUCCESS;
        }

        。。。
        MerchantBean checkMerchantBean = merchantIService.findMerchantByAccount(merchantAccount);

        if (checkMerchantBean != null) {

            ajaxResultJsonBean.setIsOK(true);
            ajaxResultJsonBean.setData(null);
            ajaxResultJsonBean.setResultCode(0);
            ajaxResultJsonBean.setResultMessage("商家账号可用");
            ajaxResultJsonBean.setOther(null);

            JSONObject ajaxResultJsonData = JSONObject.fromObject(ajaxResultJsonBean);

            this.result = ajaxResultJsonData.toString();

            return SUCCESS;
        } else {
            ajaxResultJsonBean.setIsOK(false);
            ajaxResultJsonBean.setData(null);
            ajaxResultJsonBean.setResultCode(-3);
            ajaxResultJsonBean.setResultMessage("商家账号不存在");
            ajaxResultJsonBean.setOther(null);

            JSONObject ajaxResultJsonData = JSONObject.fromObject(ajaxResultJsonBean);

            this.result = ajaxResultJsonData.toString();
            return SUCCESS;
        }
    }
    /**
     *
     * AJAX for check MerchantAccount start end
     *
     * */

Struts.xml中配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

    <!-- AJAX
    1.引入Jar包
    2.所在包必须要继承自JSON-default
    3.resultType是JSON
    4.附加了一个参数excludeNullProperties,目的是不序列化Action里为null的字段。
    5.<result>元素没有name属性,也没有跳转值
    -->
    <package name="struts_web_product_ajax" extends="json-default">
         <!-- 新增商品信息检查账号 -->
        <action name="checkMerchantAccountAction" class="controllers.actions.web.product.PrepareAddProductAction" method="checkMerchantAccountMethod">
            <result type="json">
                <param name="excludeNullProperties">true</param>
                <param name="root">result</param>
            </result>
         </action>
    </package>
</struts>

JS中接受返回结果:

返回JSON格式:

JS解析如下:

function checkMerchantAccountAjax() {

    var $merchantAccount = $("#merchantAccount");
    var merchantAccount = $merchantAccount.val();

    $.ajax({
                url : "checkMerchantAccountAction",
                type : "GET",
                data : "merchantAccount=" + merchantAccount,
                success : function(data, textStatus) {
                    var resultJSONData = JSON.parse(data);//注意这里必须有,因为之前返回的是result="json字符串",但并类型不是JSON
                    if(resultJSONData.isOK){
                            $merchantAccount.css("color", "black");
                            return true;
                    }else{
                        $merchantAccount.css("color", "red");
                        layer.tips(resultJSONData.resultMessage,$merchantAccount, {
                                        tips : [3, ‘#3595CC‘],
                                        time : 4000
                        });//end tips
                        return false;
                    }//end else

                }//end success
            });//end ajax
}// end js
时间: 2024-10-25 12:53:23

struts中实现ajax的配置信息的相关文章

STRUTS框架(web.xml,struts.xml,XXXvalidation.xml配置信息)个人心得

前言:在学习Struts2中肯定遇到不少的难题,当时检查代码无误的时候,仔细检查你的配置文件是否正确,这里暂时提供3个.XML的配置信息 1.web.xml 配置这一定要注意,在生成项目的时候一定不要着急直接点finfish,点击next ,勾选(Generate web.xml deplyment descriptor) 如果直接finfish的话,肯定会造成运行JSP页面404错误,应该有其他的方法解决,应该好麻烦(纯属个人心得,如果你有解决方法,在评论告诉我一下互相学习了.) 配置代码:

struts开发&amp;lt;struts中的action详细配置. 二&amp;gt;

在eclipse中新建项目StrutsDemo1[struts的配置见]struts开发<在eclipse中配置struts. 一> 详细文件夹结构例如以下 第一种配置方法 新建UserAction package fzl.user.struts.demo; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { public String list(){ Sys

struts开发&lt;struts中的action具体配置. 二&gt;

在eclipse中新建项目StrutsDemo1[struts的配置见]struts开发<在eclipse中配置struts. 一> 具体目录结构如下 第一种配置方法 新建UserAction package fzl.user.struts.demo; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { public String list(){ System

Java 中${key}获取应用配置信息

${key} 中key的值来至于系统配置信息                 Properties properties = System.getProperties(); @SuppressWarnings("unchecked") Enumeration<String> keys = (Enumeration<String>) properties.propertyNames(); while(keys.hasMoreElements()){ String 

Junit中的类加载spring配置信息

package org.util.test; import org.springframework.beans.BeansException;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.util.StringUtils;import org.junit.*; public class UnitTestBase { private Class

Maven中的pom.xml配置信息(自动下载需要的jar包)

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt

VTP中VLAN配置信息不同步故障排除

VTP(VLANTrunk Protocol,VLANTrunk协议)是Cisco专用的一种用于维护和管理动态VLAN(如基于MAC地址.IP地址.网络协议.VLAN管理策略等划分方式的VLAN)的二层消息的协议.它可以用来在Trunk链路上自动传播.交换VLAN配置信息,使得同一个VTP域中的交换机VLAN配置保持一致. 使用VTP的好处是可以只需在一台交换机上配置好所需的VLAN后,在同一VTP域中的交换机自动创建相同ID.名称和配置的VLAN,大大减轻了管理员重复创建.配置VLAN的工作量

.net core 2.0 mvc 获取配置信息

mvc_core_config html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,lege

.Net Standard(.Net Core)实现获取配置信息

一.前言 在.Net Framework框架有专门获取webconfig配置的方法供我们使用,但是在.Net Core或者.Net Standard中没有可以直接使用的方法来获取配置文件信息,下面就来实现获取配置信息. 二.获取配置信息的实现 在.Net Core中,他的配置信息的载体是一个json文件,我们现在就计划所有项目(包含.Net Framework和.Net Standard(.Net Core)框架)都是json文件作为配置的载体. 首先通过Nuget加载如下的包: Install