根据前端jsp/js文件实现action步骤

1、待更改的文件greenChannel.jsp,greenChannel.js。
2、将它们放入对应的目录下。
3、学生点击菜单上的绿色通道,将请求greenChannelAction,该action未进行任何特殊操作,直接跳转到greenChannel.jsp页面。
4、实现页面加载完成后发送请求的方法
4-1、在greenChannel.js最底部添加如下代码:

//页面加载之后立即执行
$(function(){
      firstSubmit();//该函数同样需要定义在该文件内
}); 

4-2、如果greenChannel.js内存在firstSubmit()方法,则在其内修改。否则另外创建一个。
4-3、在firstSubmit()方法内填写

$.get("什么Action","",
    function(data,statusText){在这里写代码},"json"

4-4、什么Action是自己需要建的类。这个类需要有Map dataMap属性get/set方法,这个属性用来返回给浏览器数据。实现public String execute()方法。在这个方法内写:

// 首先进行登录判断
        ActionContext actionContext = ActionContext.getContext();
        Map session = actionContext.getSession();
        if (session.get("identity") == null) {
            dataMap.put("success", false);
            dataMap.put("webName", "indexAction");
            return "success";
        }
        if ((int) session.get("identity") != 1) {
            dataMap.put("success", false);
            dataMap.put("webName", "indexAction");
            return "success";
        }
调用规则类内的方法或者自己写方法从GreenChannel数据库内取出对应学号的数据。如果不能取出
dataMap.put("success", false);
dataMap.put("webName","什么2action");//同样这个action需要自己命名,不要重复了,稍后介绍其内容
return "success";
如果能取出一条记录,说明已经申请过绿色通道,那么
查看这条记录的审批结果,
如果还未审批
dataMap.put("success",true);
dataMap.put("result","耐心等待审批");
如果过了
dataMap.put("success",true);
dataMap.put("result","申请通过");
否则
dataMap.put("success",true);
dataMap.put("result","申请被拒");
最后(所有)的返回值均为“success”。

4-5、现在回去实现4-3的方法。

var name=document.getElementById("name");参数是对应jsp文件中form表单下的所有文本框的id属性。同时form表单也要有id。如果id缺少自行补齐。

name.value = data.dataMap.name;这句话的含义是为name文本框赋值
其中data为4-3中回调函数的参数,dataMap是什么Action的属性,name是
dataMap.put("name","这里是值")。

想实现dataMap的功能需要在struts.xml内添加:

<action name="stuInfoSubmitAction" class="cn.edu.sdu.register.form.InformationCollectionAction">
            <result name="success" type="json">
                
                <param name="noCache">trueparam>
                
                <param name="contentType">application/jsonparam>
                
                <param name="excludeNullProperties">trueparam>
                
                <param name="includeProperties">dataMap.*param>
            result>
        action>
只需要更改action name和class(刚才定义的什么Action类)即可。

用上面的方式为页面上的每一个有内容的文本框赋值。
在这个过程中还需要判断加入如下判断

if(data.dataMap.success == false)
    window.location.href = data.dataMap.webName;
else {
    将保存按钮设置成不可点的
    在这里完成文本框的赋值
    alert(data.dataMap.result);
}

5、完成什么2Action类。拥有与jsp文件相对应的属性、get/set方法和dataMap属性。同理在struts.xml内配置该action。另外在除了dataMap属性之外的所有属性的get方法上添加
@JSON(serialize = false) // 采用注解的方式不序列化该属性
在execute方法内完成创建对应po对象,调用对象的set方法为对象赋值,赋值来源可以直接使用该action类内的属性。将对象存进数据库。建议使用dao.update()方法。
6、可能会遇到jsp页面上部分属性无法编辑然后服务器获得不到数据的情况,可以先在js内将其变成可编辑的,在提交后再变回去。还有可能遇到类型不匹配或未定义的错误,仔细看看数据库的类型,Java的类型和页面上显示的类型。页面一般都是string类型。int也可以。

你可能感兴趣的:(Java)