Flex3 CRUD 与Java后台交互 完整Demo

网上关于flex java curd的例子很少,官方的文档不全且有错误.今天自己做的个crud的例子,
不带分页(分页网上有很多例子了).
上图:


mxml:
< mx:Application
    
xmlns:mx ="http://www.adobe.com/2006/mxml"
    layout
="absolute" >

   
< mx:Script >
        
<![CDATA[
            include "product.as";
        
]]>
    
</ mx:Script >

    
< mx:HTTPService
        
id ="productService"
        url
="http://localhost:8888/flex2/productServlet"
        resultFormat
="e4x"
        useProxy
="false"   />    <!-- url改成您的数据请求地址 -->

    
< mx:ViewStack  id ="viewstack1"  width ="731"  height ="473"   x ="86.5"  y ="10" >
    
<!-- index 0  -->
        
< mx:Canvas  label ="Form View"  width ="100%"  height ="100%" >
            
< mx:Form  horizontalCenter ="0"  verticalCenter ="0"
                backgroundColor
="#18E1CC"  width ="124"  height ="56" >
                    
< mx:Button  label ="进入"  click ="fill()"  width ="100" />
            
</ mx:Form >
        
</ mx:Canvas >
    
<!-- index 1 -->     
        
< mx:Panel  label ="AdvancedDataGrid 显示"  width ="100%"  height ="100%"   layout ="absolute" >
            
< mx:AdvancedDataGrid  id ="grid1"  width ="666"  height ="380"  dataProvider ="{_result.product}"   editable ="true"  itemEditEnd ="updateHandler(event)"    x ="10"  y ="10" >
                  
< mx:columns >
                     
< mx:AdvancedDataGridColumn   dataField ="id"  headerText ="ID"   editable ="false" />
                    
< mx:AdvancedDataGridColumn   dataField ="productName"  headerText ="产品名称"   />
                    
< mx:AdvancedDataGridColumn   dataField ="remark"  headerText ="备注"   />
                  
</ mx:columns >
            
</ mx:AdvancedDataGrid >
            
            
< mx:Button  x ="60"  y ="401"  label ="添加"  click ="{viewstack1.selectedIndex = 2}" />
            
< mx:Button  label ="删除"    x ="180"  y ="401"  click ="remove()" />     
        
</ mx:Panel >
    
<!-- index 2 -->
        
< mx:Canvas  label ="添加新记录"  width ="100%"  height ="100%"  id ="canvas3"   >
            
< mx:Form
                    
backgroundColor ="#FFFFFF"   verticalCenter ="-91"  horizontalCenter ="-138" >
                    
                
< mx:FormItem  label =""  width ="189"  height ="20" >
                    
< mx:Button   label ="返回"  click ="this.viewstack1.selectedIndex=1" />
                    
< mx:TextInput  id ="hidden_id"   visible ="false"   />
                
</ mx:FormItem >     
                
                
< mx:FormItem  label ="产品名称" >
                    
< mx:TextInput  id ="productName" />
                
</ mx:FormItem >
                
                
< mx:FormItem  label ="备注" >
                    
< mx:TextInput  id ="remark" />
                
</ mx:FormItem >
                
                
< mx:Button  label ="保存"  click ="insertProduct()"  id ="btn"   />
            
</ mx:Form >
        
</ mx:Canvas >
        
    
</ mx:ViewStack >

   
</ mx:Application >
as:
import  mx.collections.XMLListCollection;
import  mx.controls.Alert;
import  mx.controls.TextInput;
import  mx.events.AdvancedDataGridEvent;
import  mx.events.CloseEvent;
import  mx.rpc.events.ResultEvent;

private  var params:Object  =   new  Object();

// private var ld:XMLListCollection; 官方文档的XMLListCollection并不能用,例子有问题郁闷
[Bindable]
private  var _result : XML ;  // 注意文件名防止冲突
/** */ /**
 * xml数据的渲染
 * 
*/

public  function resultHandler(event:ResultEvent): void  
{
    _result 
= XML(event.result);
}

/** */ /**
 * 查询所有产品的按钮事件
 * 
*/

public  function insertItemHandler(event:ResultEvent): void  
{
    fill();
}

/** */ /**
 * 查询所有产品的方法 
 * 
*/

public  function fill(): void
{
    
//为productService(HTTPService) 重新绑定监听器(查询)
    productService.removeEventListener(ResultEvent.RESULT,insertItemHandler);
    productService.addEventListener(ResultEvent.RESULT,resultHandler);
    productService.method 
= "GET";
    
//要传递的参数
    params['method'= "findAll";
    productService.cancel();
    productService.send(params);
    
//切换到Grid视图
    viewstack1.selectedIndex=1;
}

/** */ /**
 * 插入产品
 * 
*/

public  function insertProduct(): void
{
    
//绑定新的监听器(插入)
    productService.removeEventListener(ResultEvent.RESULT,resultHandler);
    productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
    productService.method 
= "POST";
    
//传递Form表单参数
    params = {"method""save""id": NaN, "productName": productName.text,
                 
"remark": remark.text}
;
    productService.cancel();
    productService.send(params);
    clearInputFields();
}

/** */ /**
 * 
 * 更新记录的事件处理函数
 * 
 * 
*/

public  function updateHandler(event:AdvancedDataGridEvent): void
{
    
//取消的话不更新
    if(event.reason == "cancelled")
    
{
        
return;
    }

    
//重新注册
    productService.removeEventListener(ResultEvent.RESULT,resultHandler);
    productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
     
//得到输入后的新数据    
     var newData:String = (TextInput(event.currentTarget.itemEditorInstance)).text;
     
//得到输入前的三个数据
     var _id : int  = this.grid1.selectedItem["id"];
     var _productName :String 
= this.grid1.selectedItem["productName"];
     var _remark :String 
= this.grid1.selectedItem["remark"];
     
//第二列为产品名称
     if(event.columnIndex == 1)
     
{
         _productName 
= newData;
     }

     
//第三列为备注
     if(event.columnIndex == 2)
     
{
         _remark 
= newData;
     }

     params 
= {"method""update""id": _id,"productName":_productName,"remark":_remark};
     productService.cancel();
     productService.send(params);
}


/** */ /**
 * 删除的方法
 * 
*/

public  function remove() :  void
{
    var index:
int = this.grid1.selectedIndex;
    
if(index == -1)
    
{
         Alert.show(
"您没有选择任何记录","提示");
         
return;
    }

     Alert.yesLabel 
= "确定";
     Alert.cancelLabel 
= "取消";
     Alert.show(
"确定要删除吗?","提示",Alert.YES|Alert.CANCEL,this,defaultCloseHandler);
}

/** */ /**
 * 处理选择是否删除后的事件
 * 
 * 
*/

public  function defaultCloseHandler(event:CloseEvent): void
{
     
//如果点击了确定
     if(event.detail == Alert.YES)
     
{
          productService.removeEventListener(ResultEvent.RESULT,resultHandler);
         productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
          var id : String  
= this.grid1.selectedItem["id"];
         params 
= {"method""remove""id": id};
         productService.cancel();
         productService.send(params);
     }

}

/** */ /**
 * 清除form中的属性值
 * 
*/

private  function clearInputFields(): void
{
    productName.text 
= "";
    remark.text 
= "";
}

源码下载地址:
点击下载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单的学生与班级的JavaCRUD示例: 1. 创建一个Student类,它包含以下属性: ```java public class Student { private int id; private String name; private int age; private int classId; //getter and setter methods } ``` 2. 创建一个Class类,它包含以下属性: ```java public class Class { private int id; private String className; //getter and setter methods } ``` 3. 创建一个StudentDao接口,它定义以下方法: ```java public interface StudentDao { List<Student> getAllStudents(); Student getStudentById(int id); void addStudent(Student student); void updateStudent(Student student); void deleteStudent(int id); } ``` 4. 创建一个ClassDao接口,它定义以下方法: ```java public interface ClassDao { List<Class> getAllClasses(); Class getClassById(int id); void addClass(Class class); void updateClass(Class class); void deleteClass(int id); } ``` 5. 创建一个StudentDaoImpl类,它实现StudentDao接口: ```java public class StudentDaoImpl implements StudentDao { private List<Student> students = new ArrayList<>(); //实现接口方法 @Override public List<Student> getAllStudents() { return students; } @Override public Student getStudentById(int id) { for (Student student : students) { if (student.getId() == id) { return student; } } return null; } @Override public void addStudent(Student student) { students.add(student); } @Override public void updateStudent(Student student) { for (Student s : students) { if (s.getId() == student.getId()) { s.setName(student.getName()); s.setAge(student.getAge()); s.setClassId(student.getClassId()); break; } } } @Override public void deleteStudent(int id) { for (Iterator<Student> iterator = students.iterator(); iterator.hasNext();) { Student student = iterator.next(); if (student.getId() == id) { iterator.remove(); break; } } } } ``` 6. 创建一个ClassDaoImpl类,它实现ClassDao接口: ```java public class ClassDaoImpl implements ClassDao { private List<Class> classes = new ArrayList<>(); //实现接口方法 @Override public List<Class> getAllClasses() { return classes; } @Override public Class getClassById(int id) { for (Class c : classes) { if (c.getId() == id) { return c; } } return null; } @Override public void addClass(Class c) { classes.add(c); } @Override public void updateClass(Class c) { for (Class clazz : classes) { if (clazz.getId() == c.getId()) { clazz.setClassName(c.getClassName()); break; } } } @Override public void deleteClass(int id) { for (Iterator<Class> iterator = classes.iterator(); iterator.hasNext();) { Class c = iterator.next(); if (c.getId() == id) { iterator.remove(); break; } } } } ``` 7. 创建一个Main类,它包含以下方法: ```java public class Main { public static void main(String[] args) { StudentDao studentDao = new StudentDaoImpl(); ClassDao classDao = new ClassDaoImpl(); //添加班级 Class c1 = new Class(); c1.setId(1); c1.setClassName("一年级一班"); classDao.addClass(c1); Class c2 = new Class(); c2.setId(2); c2.setClassName("二年级一班"); classDao.addClass(c2); //添加学生 Student s1 = new Student(); s1.setId(1); s1.setName("张三"); s1.setAge(10); s1.setClassId(1); studentDao.addStudent(s1); Student s2 = new Student(); s2.setId(2); s2.setName("李四"); s2.setAge(11); s2.setClassId(1); studentDao.addStudent(s2); //获取所有班级和学生 List<Class> classes = classDao.getAllClasses(); System.out.println("所有班级:"); for (Class c : classes) { System.out.println(c.getClassName()); } List<Student> students = studentDao.getAllStudents(); System.out.println("所有学生:"); for (Student s : students) { System.out.println(s.getName()); } //更新学生信息 Student s3 = new Student(); s3.setId(1); s3.setName("王五"); s3.setAge(11); s3.setClassId(2); studentDao.updateStudent(s3); //删除学生 studentDao.deleteStudent(2); } } ``` 这些示例代码可以帮助你基于Java创建一个简单的学生与班级的CRUD应用程序。当然,这只是一个简单的示例,实际的应用程序可能需要更多的功能和复杂性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值