会议OA项目之会议发布(多功能下拉框的详解)

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于OA项目的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.主要功能点介绍

二.效果展示 

三.前端代码

jsp

js

四.后端代码 

实体类

dao

web

五.String转Date

六.多功能下拉框详细介绍

1.网站下载地址

2.使用步骤

3.效果演示


一.主要功能点介绍

①将表单中的信息提交后新增到t_oa_meeting_info表中去

②参与人员需要通过查询回显

③列席人员需要通过查询回显

⭐⭐④参与人员和列席人员都需要使用下拉复选框,把选中的id插入到t_oa_meeting_info中去

二.效果展示 

三.前端代码

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html>
<head>
<%@include file="/common/head.jsp"%>
<script type="text/javascript"src="/LayUi/static/js/meeting/addMeeting.js"></script></head>
<body style="margin-left: 40px; margin-right: 80px;"><form class="layui-form" action=""><!--会议标题  --><div class="layui-form-item"><label class="layui-form-label">会议标题</label><div class="layui-input-block"><input type="text" name="title" lay-verify="title"autocomplete="off" placeholder="请输入标题" class="layui-input"></div></div><!-- 会议内容 --><div class="layui-form-item layui-form-text"><label class="layui-form-label">会议内容 </label><div class="layui-input-block"><textarea placeholder="请输入内容" name="content" class="layui-textarea"></textarea></div></div><!-- 参与者 --><div class="layui-form-item"><label class="layui-form-label">参与者</label><div class="layui-input-block"><select name="canyuze" xm-select="canyuze" ><option value="" selected="selected">----请选择----</option></select></div></div><!-- 列席者 --><div class="layui-form-item"><label class="layui-form-label">列席者</label><div class="layui-input-block"><select name="liexize" xm-select="liexize" ><option value="" selected="selected">----请选择----</option></select></div></div><!--主持人:拿到当前登录的用户  --><div class="layui-form-item"><label class="layui-form-label">主持人</label><div class="layui-input-block"><input type="text" readonly="readonly" name="zhuchirenname" value="${user.name }" autocomplete="off" placeholder="请输入标题" class="layui-input"><input type="hidden" name="zhuchiren" value="${user.id }"/></div></div><!--会议地点  --><div class="layui-form-item"><label class="layui-form-label">会议地点</label><div class="layui-input-block"><input type="text" name="location" lay-verify="title"placeholder="请输入地点" autocomplete="off" class="layui-input"></div></div><!-- 会议时间 --><div class="layui-form"><div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">日期范围</label><div class="layui-inline" id="test6"><div class="layui-input-inline"><input type="text" autocomplete="off" id="startTime"class="layui-input" placeholder="开始日期" name="startTime"></div><div class="layui-form-mid">-</div><div class="layui-input-inline"><input type="text" autocomplete="off" id="endTime"class="layui-input" placeholder="开始日期" name="endTime"></div></div></div></div></div><!-- 备注--><div class="layui-form-item layui-form-text"><label class="layui-form-label">备注 </label><div class="layui-input-block"><textarea placeholder="请输入内容" name="remark" class="layui-textarea"></textarea></div></div><div class="layui-form-item"><button class="layui-btn" id="btn_submit" lay-submit="" lay-filter="addmeeting">提交</button><button class="layui-btn layui-btn-primary" lay-filter="reset">重置</button></div></body>
</html>

js

let $, formSelects, laydate,form;
layui.use([ 'jquery', 'formSelects', 'laydate','form' ], function() {$ = layui.jquery, formSelects = layui.formSelects, laydate = layui.laydate,form=layui.form;initForm();//初始化表单//监听提交form.on('submit(addmeeting)', function(data){let rs = data.field;console.log("rs",rs);rs["methodName"]="add";$.post("meetingInfo.action", rs, function(data){console.log("data",data)layer.alert(data.msg+"🥳🥳", {icon: 1})}, "json");return false;});//日期范围laydate.render({elem : '#test6'//设置开始日期、日期日期的 input 选择器//数组格式为 2.6.6 开始新增,之前版本直接配置 true 或任意分割字符即可,type:"datetime",range : [ '#startTime', '#endTime' ],});});//初始化表单
function initForm(){
//	添加多功能下拉框选项//第一个参数:指的是下拉框的xm-select值,//第二个参数:select是指全选//第三个参数:remove是指移除//第四个参数:reverse是指反选formSelects.btns('canyuze', [ 'select', 'remove', 'reverse' ]);formSelects.btns('liexize', [ 'select', 'remove', 'reverse' ]);$.getJSON("user.action", {methodName : "selectusers"}, function(rs) {console.log(rs);//使用本地的数组数据进行绑定formSelects.data('canyuze', 'local', {arr : rs.data});formSelects.data('liexize', 'local', {arr : rs.data});});
}

四.后端代码 

实体类

package com.wh.entity;import java.util.Date;public class MeetingInfo {
private long id;
private String title;
private String content;
private String canyuze;
private String liexize;
private String zhuchiren;
private String location;
private Date startTime;
private Date endTime;
private String fujian;
private int state;
private String seatPic;
private String remark;
private String auditor;public MeetingInfo() {// TODO Auto-generated constructor stub
}public MeetingInfo(long id, String title, String content, String canyuze, String liexize, String zhuchiren,String location, Date startTime, Date endTime, String fujian, int state, String seatPic, String remark,String auditor) {super();this.id = id;this.title = title;this.content = content;this.canyuze = canyuze;this.liexize = liexize;this.zhuchiren = zhuchiren;this.location = location;this.startTime = startTime;this.endTime = endTime;this.fujian = fujian;this.state = state;this.seatPic = seatPic;this.remark = remark;this.auditor = auditor;
}public MeetingInfo(String title, String content, String canyuze, String liexize, String zhuchiren, String location,Date startTime, Date endTime, String fujian, int state, String seatPic, String remark, String auditor) {super();this.title = title;this.content = content;this.canyuze = canyuze;this.liexize = liexize;this.zhuchiren = zhuchiren;this.location = location;this.startTime = startTime;this.endTime = endTime;this.fujian = fujian;this.state = state;this.seatPic = seatPic;this.remark = remark;this.auditor = auditor;
}public long getId() {return id;
}public void setId(long id) {this.id = id;
}public String getTitle() {return title;
}public void setTitle(String title) {this.title = title;
}public String getContent() {return content;
}public void setContent(String content) {this.content = content;
}public String getCanyuze() {return canyuze;
}public void setCanyuze(String canyuze) {this.canyuze = canyuze;
}public String getLiexize() {return liexize;
}public void setLiexize(String liexize) {this.liexize = liexize;
}public String getZhuchiren() {return zhuchiren;
}public void setZhuchiren(String zhuchiren) {this.zhuchiren = zhuchiren;
}public String getLocation() {return location;
}public void setLocation(String location) {this.location = location;
}public Date getStartTime() {return startTime;
}public void setStartTime(Date startTime) {this.startTime = startTime;
}public Date getEndTime() {return endTime;
}public void setEndTime(Date endTime) {this.endTime = endTime;
}public String getFujian() {return fujian;
}public void setFujian(String fujian) {this.fujian = fujian;
}public int getState() {return state;
}public void setState(int state) {this.state = state;
}public String getSeatPic() {return seatPic;
}public void setSeatPic(String seatPic) {this.seatPic = seatPic;
}public String getRemark() {return remark;
}public void setRemark(String remark) {this.remark = remark;
}public String getAuditor() {return auditor;
}public void setAuditor(String auditor) {this.auditor = auditor;
}@Override
public String toString() {return "MeetingInfo [id=" + id + ", title=" + title + ", content=" + content + ", canyuze=" + canyuze + ", liexize="+ liexize + ", zhuchiren=" + zhuchiren + ", location=" + location + ", startTime=" + startTime+ ", endTime=" + endTime + ", fujian=" + fujian + ", state=" + state + ", seatPic=" + seatPic + ", remark="+ remark + ", auditor=" + auditor + "]";
}
}

dao

package com.wh.dao;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.wh.entity.MeetingInfo;
import com.wh.entity.Permission;
import com.wh.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.BuildTree;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;
import com.zking.util.TreeVo;public class MeetingInfoDao extends BaseDao<MeetingInfo> {//发布会议(增加)public int add(MeetingInfo t) throws Exception {String sql = "insert into t_oa_meeting_info"+ "(title,content,canyuze,liexize,zhuchiren,location,startTime,endTime,remark) "+ "value(?,?,?,?,?,?,?,?,?)";return super.executeUpdate(sql, t, new String[] { "title", "content", "canyuze", "liexize", "zhuchiren","location", "startTime", "endTime", "remark" });}
}

web

package com.wh.web;import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.ConvertUtils;import com.wh.dao.MeetingInfoDao;
import com.wh.entity.MeetingInfo;
import com.wh.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
import com.zking.util.R;
import com.zking.util.ResponseUtil;
import com.zking.util.StringUtils;import java.util.Date;public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo> {private MeetingInfo meetingInfo = new MeetingInfo();private MeetingInfoDao mid = new MeetingInfoDao();// 增加public void add(HttpServletRequest req, HttpServletResponse resp) throws Exception {// 影响行数int add = mid.add(meetingInfo);if (add > 0) {ResponseUtil.writeJson(resp,R.ok(0, "发布会议成功"));} else {ResponseUtil.writeJson(resp,R.error(0, "发布会议失败"));}}@Overridepublic MeetingInfo getModel() {ConvertUtils.register(new MyDateConverter(), Date.class);return meetingInfo;}}

五.String转Date

可以看到,我们在实体类中的时间用的是Date类型,但是我们子啊表单中所获取到的数据是String类型的,如果直接将获取的数据添加到数据库中,便会报出一个异常!!

 大致意思就是无法将String类型转换成Date类型

 那么在这里,我们可以用到一个工具类(将转换的代码全部封装起来,那么以后在其他的地方就方便调用)

package com.zking.util;import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.commons.beanutils.Converter;public class MyDateConverter implements Converter {@Overridepublic Object convert(Class type, Object value) {String dateStr = (String)value;SimpleDateFormat spdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {Date date = spdt.parse(dateStr);return date;} catch (Exception e) {e.printStackTrace();}return null;}
}

 

六.多功能下拉框详细介绍

1.网站下载地址

插件下载地址icon-default.png?t=N6B9https://github.com/hnzzmsf/layui-formSelects文档下载地址icon-default.png?t=N6B9https://hnzzmsf.github.io/example/example_v4.html#download

2.使用步骤

先进入插件下载的地址

 

 

 

 

之后只需要在需要使用的jsp界面上引用就行啦!! (这里我是把它引入到了公共页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<meta name="viewport" content="width=device-width,initial-scale=1.33,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<meta http-equiv="Content-Language" content="zh-CN"><!-- 引入layui的css -->
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath}/static/js//layui/css/layui.css" type="text/css" media="all">
<!-- 引入layui的js -->
<script type="text/javascript" src="${pageContext.request.contextPath}/static/js/layui/layui.js"></script>
<!-- 引入formSelects的css -->
<link rel="stylesheet" href="${pageContext.request.contextPath }/static/js/plugin/formSelects-v4.css" />
<!-- 引入formSelects的js -->
<script src="${pageContext.request.contextPath }/static/js/plugin/formSelects-v4.js" type="text/javascript" charset="utf-8"></script><base href="${pageContext.request.contextPath}/"  />

对了,在这里还需要说一个注意事项

我们可以看到,其中的'data',也就是数据,它里面的数据的基本格式是name及value


但是我们的数据库中的字段与它不一样(我们的是name和id) 

所以我们需要写一个sql语句,将数据库中数据转换成我们需要的数据格式!!

package com.wh.dao;import java.util.List;
import java.util.Map;import com.wh.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;
/*** dao层* @author W**/
public class UserDao extends BaseDao<User> {//查询用作发布会议下拉框中的数据public List<Map<String, Object>> selectusers(User user, PageBean pageBean) throws Exception {String sql="select id as value,name from t_oa_user";return super.executeQuery(sql, pageBean);}
}

具体使用的js代码都在前端代码中的js中了

3.效果演示

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[极客大挑战 2019]PHP(反序列化)

介绍说明&#xff0c;有备份的习惯&#xff0c;找常见的备份文件后缀名 使用dirsearch进行扫描 dirsearch -u http://f64378a5-a3e0-4dbb-83a3-990bb9e19901.node4.buuoj.cn:81/ -e php-e 指定网站语言 扫描出现&#xff0c;www.zip文件 查看index.php <?php include c…

C++-----vector

本期我们来学习C中的vector&#xff0c;因为有string的基础&#xff0c;所以我们会讲解的快一点 目录 vector介绍 vector常用接口 构造函数 sort 迭代器 size&#xff0c;max_size&#xff0c;capacity&#xff0c;empty reserve和resize front和back data insert和…

MATLAB 基于CPD的点云配准 (24)

MATLAB 基于CPD的点云配准 (24) 一、算法简介二、具体使用1.代码(注释详细)2.函数介绍3.使用技巧4.重复叠加配准效果如何一、算法简介 MATLAB 中包含了一种基于CPD的点云配准方法,这里对其进行使用,查看其配准效果,结果来看如上图所示,还是可用的。 二、具体使用 1.代…

快7月底了,让我康康有多少准备跳槽的

前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员、疫情影响导致好多人都没拿到offer!现在已经快7月底了&#xff0c;具体金九银十只剩下2个月。 对于想跳槽的职场人来说&#xff0c;绝对要从现在开始做准备了。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需求也…

ElasticSearch 数据迁移工具elasticdump

ElasticSearch 数据迁移工具elasticdump Elasticdump 是一个用于导入和导出 Elasticsearch 数据的命令行工具。它提供了一种方便的方式来在不同的 Elasticsearch 实例之间传输数据&#xff0c;或者进行数据备份和恢复。 使用 Elasticdump&#xff0c;你可以将 Elasticsearch …

allure环境搭建

allure环境搭建 在搭建之前你应该有python、pycharm allure介绍 官网&#xff1a;https://docs.qameta.io/allure/ 英文介绍 Allure Framework is a flexible lightweight multi-language test report tool that not only shows a very concise representation of what have…

关于allure和pycharm的运行模式

案例 新建一个项目allure_mode 新建一个python代码test_allure_001.py 代码如下 import pytest, os def test_001(): assert 1 1 if __name__ __main__: pytest.main([-sv, __file__, --alluredir, ./html, --clean-alluredir]) os.system(fallure se…

【异常解决】postman请求提示Full authentication is required to access this resource

Full authentication is required to access this resource解决办法 报错问题&#xff1a;在使用 postman 测试接口时&#xff0c;该接口需要在 Header 中传入 access_token&#xff0c;实际上也在请求的 Header 中添加上了 access_token 参数&#xff0c;但是服务端还是返回4…

qt与opencv学习记录

qtopencv开发入门&#xff1a;4步搞定环境配置-1_哔哩哔哩_bilibili qtopencv开发入门&#xff1a;4步搞定opencv环境配置2_哔哩哔哩_bilibili 文章内容来自上面两个视频&#xff0c;感谢创作者。 ps&#xff1a;配置环境的过程中&#xff0c;遇到了很多问题&#xff0c;我…

性能测试工具 Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

目录 前言 ActiveMQ 介绍 准备工作 编写jndi.properties添加到ApacheJMeter.jar 中 下载 ActiveMQ 配置 Jmeter 进行测试 点对点 (Queues 队列) 配置 Jmeter 进行测试 发布/订阅 (Topic 队列) 配置发布 Publisher 配置订阅 Subscriber 总结 前言 JMeter是一个功能强大…

Windows搭建Nginx实现RTMP转为HLS流

所需软件 nginx-1.7.11.3-Gryphon&#xff08;这个包含必须的RTMP模块&#xff0c;普通的Ngxin没有这个&#xff09;ffmpegVLC 配置Nginx 1为Nginx配置RTMP和HLS 这里定义了一个叫live的RTMP路径。同时设置其开启HLS功能&#xff0c;那么所有推送到这个地址的RTMP流都会自动生…

吴恩达ML2022-用于手写数字识别的神经网络

1 用到的包 导入在这个分配过程中需要的所有包。 Numpy 是使用 Python 进行科学计算的基本软件包。Matplotlib 是在 Python 中绘制图形的流行库。tensorflow是一种流行的机器学习平台。 import numpy as np import tensorflow as tf from tensorflow.keras.models import Se…

IIS Express本地开发测试如何映射到外网访问?

1.IIS Express是什么 IIS Express是为开发人员优化的轻量级、自包含版本的IIS。它具有IIS 7及以上的所有核心功能&#xff0c;以及为简化网站开发而设计的附加功能。 IIS Express&#xff08;跟ASP.NET开发服务器一样&#xff09;可以快速地从硬盘上的某个文件夹上启动网站…

【LeetCode周赛】2022上半年题目精选集——动态规划

文章目录 2140. 解决智力问题解法1——倒序DP&#xff08;填表法&#xff09;解法2——正序DP&#xff08;刷表法&#xff09;⭐⭐⭐ 2167. 移除所有载有违禁货物车厢所需的最少时间⭐⭐⭐解法1——前缀和⭐⭐⭐⭐⭐解法2——前后缀分解 动态规划代码1——看了思路之后自己写的…

亚信科技荣任「DBL电信行业工作组」副组长单位,AntDB数据库连年入选《中国数据库产品图谱》

日前&#xff0c;“2023可信数据库发展大会”在京圆满召开。亚信科技凭借自研的电信级核心交易数据库AntDB在通信行业15年的技术积累和行业贡献&#xff0c;成功当选为数据库应用创新实验室&#xff08;DBL&#xff09;电信行业工作组副组长单位。AntDB数据库连续两年入选《全球…

星火认知大模型,让我感受到了国产AI的崛起

文章目录 一、申请和测试代码二、实测GPT4.0和星火认知大模型的对比2.1 测试网站2.2 经典问题提问对比2.3 代码问题提问对比2.4 论文问题对比2.5 评价 一、申请和测试代码 在我之前的一篇文章中&#xff0c;我分享了如何申请星火认知大模型的内测&#xff0c;并提供了一份可以…

java项目之班级同学录网站(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的班级同学录网站。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&a…

UE5 DLC

前言 在网上找了很多文档,并没有介绍DLC如何创建,但是对比多篇文档后,可以总结为DLC也是Pak包,本质上还是补丁包,B站上有一篇视频介绍了: [UE4]如何在虚幻4游戏里添加DLC的教程(中英机翻)_哔哩哔哩_bilibili 但是也感觉不对,因为要改Build.cs文件。故研究了一下插件式…

day40-Mybatis(resultMap拓展)

0目录 Mybatis-resultMap拓展 1.2.3 1.数据库字段和javabean实体类属性不一致时 解决方案1&#xff1a;将sql语句中给予别名&#xff08;别名同javabean中实体类保持一致&#xff09; 解决方案2&#xff1a;使用resultMap 2.两表关联&#xff08;用户表和角色表关联查询&…

迅镭激光赋能工程机械,客户连续复购激光加工设备达双赢!

工程机械是装备制造业的重要组成部分&#xff0c;当前&#xff0c;我国已成为门类齐全、规模庞大、基础坚实、竞争力强的工程机械设备制造大国。 随着工程机械产业正在全面向智能化、绿色化转型&#xff0c;激光加工成为推动工程机械产业转型升级的重要工具&#xff0c;越来越多…