IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 用hibernate+ajax做页面带下拉列表的显示, -> 正文阅读

[JavaScript知识库]用hibernate+ajax做页面带下拉列表的显示,

1、显示

在页面<tbody></tbody>中做先清空后追加

<table id="teachertable" class="table table-hover text-center">
      <tr><th width="100" style="text-align:left; padding-left:20px;">教师名称</th>
        <th>联系方式</th> 
        <th>教师职称</th> 
        <th>专兼职</th> 
        <th width="10%">教师简介</th> 
        <th width="310">操作</th> </tr>
<tbody id="tb"></tbody>

此项目是通过超链接跳转到添加页面的

修改添加页面要显示的信息,如:

<div class="form-group">
        <div class="label">
          <label>登录账号:</label>
        </div>
        <div class="field">
          <input  id="loginName" type="text" class="input w50" value="" name="tea.loginName" data-validate="required:请输入教师名称" />
          <div class="tips"></div>
        </div>
      </div>
      <div class="form-group">
        <div class="label">
          <label>登录密码:</label>
        </div>
        <div class="field">
          <input  id="password" type="text" class="input w50" value="" name="tea.password" data-validate="required:请输入教师名称" />
          <div class="tips"></div>
        </div>
      </div>

下拉列表中的值不能写死在页面上,一般会在数据库中有一个数字字典,可以上数据库查询?然后显示。这里除了有职称下拉列表,还有专兼职的下拉列表

      <div class="form-group">
          <div class="label">
            <label>职称:</label>
          </div>
          <div class="field">
           <input  id="zcop" type="hidden" >
            <select  id="zc" name="tea.zc" class="input w50">
              <option value="">请选择</option>
              <option value="1">教授</option>
              <option value="2">副教授</option>
              <option value="2">讲师</option>
              <option value="2">助教</option>
              <option value="2">高级工程师</option>
              <option value="2">工程师</option>
              
            </select>
            <div class="tips"></div>
          </div>
        </div>

在数据库中创建字典表

?如上图? type对应的是那么的英文value是name中包含的选项,code看公司要求,有的要求写

方便数据的关联

在下拉列表中要显示的是value的值,传到数据库的是id的值

带下拉列表的添加?
1 在页面加载的时候,先用ajax查询教师职称和专兼职两个数组传递到 对应的下拉中(显示)
2 用ajax 完成添加保存
?

<script type="text/javascript">
$.ajax({
	       type: "POST",
	       url: "/ssh_sign0506/dict!showTea",     
	       dataType:"json",
	       success: function (res) {
	    		console.log(res);
	    		//先显示职称的下拉列表
	    		var zopt='';
	    		$("#zc").empty();
	    		$.each(res.zc,function(i,v){
	    			var ck ="";
	    			if(v.id==$("#zcop").val() ){
	    				ck ="selected"
	    			}
	    			//alert(ck)
	    			zopt = zopt + '<option '+ck+' value="'+v.id+'">'+v.value+'</option>'
	    		});
	    		
	    		$("#zc").append(zopt);
	    		//再显示专兼职的下拉列表
	    		var jzopt='';
	    		$("#zjz").empty();
	    		$.each(res.jz,function(i,v){
	    			jzopt = jzopt + '<option value="'+v.id+'">'+v.value+'</option>'
	    		});
	    		$("#zjz").append(jzopt);
	       },
	       error: function(data) {
	         alert("系统出现异常")
	       }
	 });
	
})



</script>

?从sturts中开始写

   <!-- 字典表管理(显示) -->
   <action name="dict!*" 
   class="com.hxci.controller.DictController"
   method="{1}" >
    <result name="showTea" type="json">      //DictController.java中shouTea方法的返回类型是showAll,所以 name=showAll
        <param name="root">data</param>      //这里写的data那么DictController.java中定义用来赋值的也得是data
     </result>
    
   </action>

创建com.hxci.controller.DictController

package com.hxci.controller;


public class DictController {

    DictService dservice =new DictServiceImp();
	Map data =new HashMap();

	public String showTea(){		                //只要是控制层的方法都是String
		data = dservice.showFood();                  //需要包含两个数组,所以用
		return "showTea";//数组是咋写,两个数组咋办
	}

    //要定义data的get set方法
	public Map getData() {
		return data;
	}

	public void setData(Map data) {
		this.data = data;
	}
	
}

给t_dict配置com.hxci.pojo;类和映射文件

package com.hxci.pojo;
public class Dict {
   private Integer id;
   private String name;
   private String type;
   private String code;
   private String value;
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getType() {
	return type;
}
public void setType(String type) {
	this.type = type;
}
public String getCode() {
	return code;
}
public void setCode(String code) {
	this.code = code;
}
public String getValue() {
	return value;
}
public void setValue(String value) {
	this.value = value;
}
@Override
public String toString() {
	return "Dict [id=" + id + ", name=" + name + ", type=" + type + ", code="
			+ code + ", value=" + value + "]";
}
   
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">   
<hibernate-mapping>
  
   <class name="com.hxci.pojo.Dict" table="t_dict">
	   <id name="id" column="id">
	   <generator class="native"></generator>
	   </id>
     <property name="name" column="name"></property>
     <property name="code" column="code"></property>
     <property name="type" column="type"></property>
     <property name="value" column="value"></property>
     
   </class>
</hibernate-mapping>
 <!-- hibernate映射文件加载 -->
        <mapping resource="com/hxci/pojo/sign.hbm.xml"/>
        <mapping resource="com/hxci/pojo/Course.hbm.xml"/>
        <mapping resource="com/hxci/pojo/Dict.hbm.xml"/>
         <mapping resource="com/hxci/pojo/Teacher.hbm.xml"/>

写service,调Dao层

package com.hxci.controller;

import java.util.HashMap;
import java.util.Map;

import com.hxci.service.DictService;
import com.hxci.service.impl.DictServiceImp;

public class DictController {
	DictService dservice = new DictServiceImp();
	
	
	public String showTea(){		
		//data=????
		return "showTea";//数组是咋写,两个数组咋办
	}

}

创建接口DictService

package com.hxci.service;

import java.util.Map;

public interface DictService {

	Map showTea();

}

创建接口的实现方法

package com.hxci.service.impl;

public class DictServiceImp implements DictService {
	
	}

}
package com.dyx.controller;

import java.util.HashMap;
import java.util.Map;

import com.dyx.service.DictService;
import com.dyx.serviceimpl.DictServiceImp;



public class DictController {
	
	DictService dservice =new DictServiceImp();
	Map data =new HashMap();
	
	public String showFood(){
		data =dservice.showFood();
		return "showFood";//这一个数组怎么写
		
	}
	public Map getData() {
		return data;
	}
	public void setData(Map data) {
		this.data = data;
	}
	
	
}

在接口中返回的是map

package com.hxci.service;

import java.util.Map;

public interface DictService {

	Map showTea();         //返回的map

}

在实现类中

package com.hxci.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.hxci.dao.DictDao;
import com.hxci.pojo.Dict;
import com.hxci.service.DictService;

public class DictServiceImp implements DictService {   //怎样返回map
	DictDao dao = new DictDao();                       //调用dao层
	
	//业务处理
	@Override
	public Map showTea() {                             //要调用两次Dao层方法
		Map map = new HashMap();                       
		//通过 zhicheng 查询职称下拉列表的值 也就是value
		List<Dict> list1 = dao.queryByTea("zhicheng"); //将数据字典中的type字段传入
		//通过 zjz 查询专兼职下拉列表的值
		List<Dict> list2 = dao.queryByTea("zjz");      
		
		map.put("zc", list1);      //ajax中职称下拉列表的id=“职称”
		map.put("jz", list2);
		return map;
	}

}

创建Dao层方法,以前做查询是直接进行查询,现在是有条件的查询

package com.hxci.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.hxci.pojo.Dict;
import com.hxci.util.DBUtil;

public class DictDao extends DBUtil{    

	Session session = getSession();     //想用记得继承
	
	public List<Dict> queryByTea(String str) {
		//hql 类查询 select id,name(属性名) where 属性名=?  ,sql 表查询
		  String hql = "from Dict where type =  ?";    //给问号赋值
		  Query query = session.createQuery(hql);
		  query.setString(0, str);              //str是实现类中传递过来的zhicheng,zjz
		  List<Dict> list = query.list();       //要返回的是个集合
		  return list;
	}

}

$.ajax({
	       type: "POST",
	       url: "/ssh_sign0506/dict!showTea",     
	       dataType:"json",
	       success: function (res) {
	    		console.log(res);
	    		//先显示职称的下拉列表
	    		var zopt='';                     
	    		$("#zc").empty();    
	    		$.each(res.zc,function(i,v){     //先进行循环遍历 zc是一个集合 v是集合中的每一个数据
	    			var ck ="";
	    			if(v.id==$("#zcop").val() ){ 
	    				ck ="selected"
	    			}
	    			//拼接 value是数据库中的id
	    			zopt = zopt + '<option '+ck+' value="'+v.id+'">'+v.value+'</option>'
	    		});
	    		
	    		$("#zc").append(zopt);
	    		//再显示专兼职的下拉列表
	    		var jzopt='';
	    		$("#zjz").empty();    //页面下拉列表定义的id
                //res.jz是在实现类中定义的 map.put("jz", list2);
	    		$.each(res.jz,function(i,v){
	    			jzopt = jzopt + '<option value="'+v.id+'">'+v.value+'</option>'
	    		});
	    		$("#zjz").append(jzopt);
	       },
	       error: function(data) {
	         alert("系统出现异常")
	       }
	 });
	
})

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:06:15  更:2021-10-21 12:08:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 18:59:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计