热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

S2SH学习笔记之easyui——表单传递类对象

在学习S2SH框架,jsp表单处理时,传递参数如String,int常见的参数基本没有问题,但在传递一个类(Model)时,遇到一点点小挫折。通常表单传参数步骤如下:服

  在学习S2SH框架,jsp表单处理时,传递参数如String,int常见的参数基本没有问题,但在传递一个类(Model)时,遇到一点点小挫折。

  通常表单传参数步骤如下:

 服务器(Action类)

 1.定义变量

 2.创建getter和setter,便于前端传值

Scope("prototype")
@Namespace("/Control")
@Action(value="AlarmGroup_SMS")
public class RTDAlarmGroup_SMSAction  extends BaseAction  {
	private String s_UserID;
	private String s_delUserIDs;
	private RTDAlarmGroup_SMS_User User;

	public String getUserID() {
		return s_UserID;
	}

	public void setUserID(String s_UserID) {
		this.s_UserID = s_UserID;
	}
	
	public String getDelUserIDs() {
		return s_delUserIDs;
	}

	public void setDelUserIDs(String s_delUserIDs) {
		this.s_delUserIDs = s_delUserIDs;
	}

	
	public RTDAlarmGroup_SMS_User getUser() {
		return User;
	}

	public void setUser(RTDAlarmGroup_SMS_User User) {
		this.User = User;
	}

	// 其他代码

  台(jsp)

	
ID:
姓  名:
手  机:
短信通知::
短信通知: 否    是   


    Javascript部分

	function addUser(){

		resetValue();
		
		$(dlgUser).dialog("open").dialog("setTitle","新增 - 短信用户信息");

		url = "${contextPath}/Control/AlarmGroup_SMS!addUser?ID_AlarmGroup=<%=ID_AlarmGroup%>";
	}

	function editUser(){
		var selectedRows=$(dgUser).datagrid('getSelections');
		if(selectedRows.length!=1){
			$.messager.alert("系统提示","请选择一条要编辑的数据!");
			return;
		}
		
		var row = selectedRows[0];
		$(dlgUser).dialog("open").dialog("setTitle","编辑 - 短信用户信息");

		$("#ID").val(row.id);
		$("#Name").val(row.Name);
		$("#Phone").val(row.Phone);
		$("#Checked").val(row.Checked);
		//$("#Checked1").combobox("setValue",row.Checked);

		if (row.Checked == true)
			document.getElementById("UserChecked1").checked=true;
		else
			document.getElementById("UserChecked0").checked=true;
		
		url="${contextPath}/Control/AlarmGroup_SMS!editUser?ID_AlarmGroup=<%=ID_AlarmGroup%>&UserID=" + row.id;
	}
	
	function delUser(){
		var selectedRows=$(dgUser).datagrid('getSelections');
		if(selectedRows.length == 0){
			$.messager.alert("系统提示","请选择要删除的数据!");
			return;
		}

		var s_Ids = [];
		for(var i = 0; i "+selectedRows.length+"条数据吗?",function(r){
			if(r){
				$.post("${contextPath}/Control/AlarmGroup_SMS!deleteUser",{ID_AlarmGroup:<%=ID_AlarmGroup%>,DelUserIDs:ids},function(result){
					if(result.success){
						//$.messager.alert("系统提示","您已成功删除数据!");
						$(dgUser).datagrid("reload");
					}else{
						$.messager.alert('系统提示',result.errorMsg);
					}
				},"json").error(function() {
					alert("执行失败");
					})
					;
			}
		});
	}
	
	function save(){
		$("#fm").form("submit",{
			url:url,
			onSubmit:function(){
				if($("#Name").val()==""){
					$.messager.alert("系统提示","名称不能为空");
					return false;					
				}
				if($("#Phone").val()==""){
					$.messager.alert("系统提示","手机不能为空");
					return false;					
				}
				// 
				$("#Checked").val($('input[name="UserChecked"]:checked').val());
				//$.messager.alert("系统提示Checked",$("#Checked").val());
				return $(this).form("validate");
			},
			success:function(data){
				var result = eval('(' + data + ')');
				if(result.errorMsg){
					$.messager.alert("系统提示",result.errorMsg);
					return;
				}else{
					//$.messager.alert("系统提示","保存成功");
					resetValue();
					$(dlgUser).dialog("close");
					$(dgUser).datagrid("reload");
				}
			}
		});
	}
	
	function resetValue(){
		$("#ID").val("");
		$("#Name").val("");
		$("#Phone").val("");
//		$("#Checked").combobox("setValue","1");
		
		//$.messager.alert("系统提示:UserChecked",$('input[name="UserChecked"]:checked').val());		
		//var str = document.getElementsByName("UserChecked");
		document.getElementById("UserChecked1").checked = true;
	}
	
	function close(){
		$(dlgUser).dialog("close");
		resetValue();
	}	

    但始终得到的User是一个null,无法正确地从前台获取到值,s_UserID就能够正常从前台获取值,经过不断测试(因初学,对Action机制了解不深),发现是User没有初始化的原因,导致前端无法传值,于是修改如下:

	// SMS_User 必须初始化,否则easyui 表单无法向User传值
	private RTDAlarmGroup_SMS_User User = new RTDAlarmGroup_SMS_User();
这样,就能很顺利从前台得到对应的值了。


很奇怪:为啥int、String就不用初始化就可以呢,而自己的类就必须要先初始化呢

另外,特记:前台传递参数的名字调用Action类的get对应的名字,和Action定义的变量名不一定完全一致。

例如:

变量名为s_UserID;但对应的get是GetUserID(),

	private String s_UserID;
	public String getUserID() {
		return s_UserID;
	}

	public void setUserID(String s_UserID) {
		this.s_UserID = s_UserID;
	}

则表单对应调用的应该是UserID,而不是s_UserID;

url="${contextPath}/Control/AlarmGroup_SMS!editUser?ID_AlarmGroup=<%=ID_AlarmGroup%>&UserID=" + row.id;

前端效果:



推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
author-avatar
洱冬橙66_156
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有