点击 input 框显示弹窗,关闭弹窗给 input 赋值并进行必填校验

news2024/9/20 13:37:39

背景

在现代Web应用开发中,实现用户友好的输入交互是提升用户体验的关键之一。例如,在表单设计中,通过点击输入框触发弹窗来辅助用户输入,并在关闭弹窗时自动填充输入框并进行必要的校验,可以显著提高表单填写的便捷性和准确性。

功能描述

点击输入框(input)时显示一个弹窗,当用户关闭弹窗时,将弹窗中的输入值赋给对应的输入框,并对输入内容进行必填项校验。

实现思路

  • 绑定事件:为 input 元素绑定 focus 事件。
  • 显示弹窗:点击事件触发后显示弹窗。
  • 关闭弹窗:使用 emit 传递参数并关闭弹窗。
  • 赋值与校验:获取传递的参数,赋值给input元素,最后表单提交时校验必填。

代码示例

安装 element-ui

npm install element-ui
# 或者
yarn add element-ui

main.js 引入 element-ui

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import "element-ui/lib/theme-chalk/icon.css";
import Element from "element-ui";

Vue.use(Element);
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

显示弹窗
使用 Element-UI 的 dialog 组件, 给 input 输入框绑定 focus 事件, 当 input 输入框获得焦点时调用 selectUser 组件里定义的 show 方法, 显示 selectUser 组件

// index.vue
<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm" label-position="left" label-width="86px">
      <el-row>
        <el-col>
          <el-form-item label="项目成员" prop="oneName">
            <el-input size="medium" v-model="ruleForm.oneName" clearable @focus="showDialog"
              placeholder="请选择"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <SDialog ref="SDialog"></SDialog>
  </div>
</template>

<script>
import SDialog from '@/views/popupAndSelect/SDialog.vue';

export default {
  name: 'show',
  data() {
    return {
      ruleForm: {
        oneName: "",
      }
    }

  },
  components: { SDialog },
  methods: {
    showDialog() {
      this.$refs.SDialog.show()
    },
  }
}
</script>

selectUser.vue 文件

// selectUser.vue
<template>
  <div>
    <el-dialog title="请选择" :visible.sync="isShow" width="600px" :before-close="handleClose" center :show-close="false"
      :close-on-click-modal="false" append-to-body :close-on-press-escape="false" class="dialog_class">
      <h2>dialog</h2>
      <span slot="footer" class="dialog-footer">
        <el-button class="btn submit" type="primary" @click="ok">确 定</el-button>
        <el-button class="btn cancel" @click="cancel">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
  name: "SDialog",
  data() {
    return {
      isShow: false,
    }
  },
  methods: {
    show() {
      this.isShow = true;
    },
    ok() {
      this.cancel();
    },
    cancel() {
      this.isShow = false;
    },
    handleClose(done) {
      done();
    },
  }
}
</script>

在这里插入图片描述

传递参数并关闭弹窗

选择好人员后, selectUser 组件使用 emit 自定义事件 selectUser 将选择的人员数据传递给 index.vue, index.vueselect-user 标签定义事件 @selectUser="selectUser" 接受数据

// selectUser.vue
<template>
  <div>
    <el-dialog title="请选择项目人员" :visible.sync="isShow" width="1050px" :before-close="handleClose" center :show-close="false"
      :close-on-click-modal="false" append-to-body :close-on-press-escape="false" class="dialog_class">
      <div class="content">
        <el-checkbox-group v-model="userIds" class="checkbox-con" @change="handleCheckedCitiesChange">
          <el-checkbox v-for="item in userList" :key="Math.random()" border :label="item.userId">{{ `${item.userName} -
            ${item.phone}` }}</el-checkbox>
        </el-checkbox-group>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button class="btn submit" type="primary" @click="ok">确 定</el-button>
        <el-button class="btn cancel" @click="cancel">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import { getUser } from '@/api/prokect.js';
export default {
  name: "SDialog",
  data() {
    return {
      userList: [], // 人员列表
      userIds: [], // 选中的用户id
      isShow: false,
      selectioneds: [], // 选中的项
    }
  },
  methods: {
    show() {
      this.isShow = true;
      this.query();
    },
    ok() {
      this.$emit("selectUser", this.selectioneds);
      this.cancel();
    },
    cancel() {
      this.isShow = false;
    },
     // 查询人员列表
     query() {
      getUser().then(({ data: { userList } }) => {
        this.userList = userList;
      })
    },
     // 多选
     handleCheckedCitiesChange(value) {
      console.log(value); // value勾选的所有项
      this.selectioneds = []; // 先初始化
      this.userIds = [];
      value && value.forEach(v => {
        // 存储用户id
        this.userIds.push(v);
        this.userList.forEach(w => {
          if (v === w.userId) {
            // 选中的项
            this.selectioneds.push(w);
          }
        })
      });
    },
    handleClose(done) {
      done();
    },
  }
}
</script>

index.vue

// index.vue
<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm" label-position="left" label-width="86px">
      <el-row>
        <el-col>
          <el-form-item label="项目成员" prop="oneName">
            <el-input size="medium" v-model="ruleForm.oneName" clearable @focus="showDialog"
              placeholder="请选择"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <SDialog ref="SDialog" @selectUser="selectUser"></SDialog>
  </div>
</template>

<script>
import SDialog from '@/views/popupAndSelect/SDialog.vue';

export default {
  name: 'show',
  data() {
    return {
      ruleForm: {
        oneName: "",
      }
    }

  },
  components: { SDialog },
  methods: {
    showDialog() {
      this.$refs.SDialog.show()
    },
    selectUser(data){
      console.log('data::: ', data);
    }
  }
}
</script>

在这里插入图片描述

校验表单

Element-UI 表单校验规则:

  • 定义表单模型:通常使用 v-model 指令将表单项与 Vue 实例中的数据绑定。
  • 定义校验规则:通过 el-form:rules 属性定义校验规则,这是一个对象,其键是表单域的名字,值是一个对象或校验规则数组。
  • 触发校验:可以通过调用 el-formvalidate 方法来手动触发校验,也可以通过表单控件的 trigger 属性来指定自动触发校验的时机。
  • 下面是 rule 规则的属性介绍:
    • required: 布尔值,表示是否必须填写该项,默认为 false。如果设为 true,则该项不能为空。
    • message: 字符串,当验证失败时显示的消息。
    • trigger: 字符串或字符串数组,表示在什么情况下触发验证。可以是 'blur'(失焦时触发)、'change'(值改变时触发)或 'submit'(提交时触发)。也可以同时设置多个触发器。
    • type: 字符串,验证类型,可以是 'string', 'number', 'integer', 'email', 'url', 'date', 'datetime', 'time'。默认为 'string'
    • min: 数字,对于字符串来说是最小长度,对于数字来说是最小值。
    • max: 数字,对于字符串来说是最大长度,对于数字来说是最大值。
    • pattern: 正则表达式对象,用于验证字段值是否符合正则表达式的模式。
    • validator: 函数,自定义验证方法,接收 (rule, value, callback) 作为参数,其中 rule 是当前的验证规则对象,value 是当前字段的值,callback 是验证完毕后的回调函数。

注意:

el-form-item 标签里的表单元素的 v-model需注意以下几点:

  • 绑定的属性名要与 rules 里定义的规则名字一致,否则不会触发校验。
  • 一定要是 el-formmodel 绑定的对象里的属性,否则会一直校验不通过。
  • el-formmodel 绑定的对象在 data 里定义, 且 el-form-item 下的 v-model 绑定的属性要在该对象里定义。

校验表单示例

<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm" :rules="rules" label-position="left" label-width="86px">
      <el-row class="row-from">
        <el-col class="text-left col-item">
          <el-form-item label="项目成员" prop="oneName">
            <el-tooltip class="item" size="medium" effect="dark" :disabled="selectNum == 0" placement="top"
              v-model="isShowTooltip">
              <div slot="content" class="tooltip-con">
                <div v-for="item in selectUserList" :key="item.userId" class="size16 team-text">{{ `${item.userName} -
                  ${item.phone}` }}</div>
                <i class="el-icon-close close" @click="closeTooltip"></i>
              </div>
              <el-badge :value="selectNum" class="item" type="primary">
                <el-input size="medium" v-model="ruleForm.oneName" clearable @focus="showDialog"
                  placeholder="请选择"></el-input>
              </el-badge>
            </el-tooltip>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row class="row-from">
        <el-col class="text-left">
          <el-button class="btn select" size="medium" @click="submit" type="primary">提交</el-button>
        </el-col>
      </el-row>
    </el-form>
    <SDialog ref="SDialog" @selectUser="selectUser"></SDialog>
  </div>
</template>

<script>
import SDialog from '@/views/popupAndSelect/SDialog.vue';

export default {
  name: 'show',
  data() {
    const checkOneName = (rule, value, callback) => {
      console.log('checkTeam::: ', value);
      if (!value) {
        callback(new Error('请选择和作社项目组名称'))
      } else {
        callback()
      }
    };
    return {
      isShowTooltip: false,
      selectNum: 0,
      rules: {
        oneName: [
          { required: true, message: '请选择名字', trigger: 'blur,change' },
          { validator: checkOneName, trigger: 'change' }
        ],
      },
      ruleForm: {
        nameList: [],
        userIds: [],
        oneName: "",
      },
      selectUserList: [],
    }

  },
  components: { SDialog },
  methods: {
    showDialog() {
      this.$refs.SDialog.show()
    },

    selectUser(data) {
      console.log('data::: ', data);
      // 拿到所有用户的 userName
      let nameList = data.map(item => item.userName);
      this.ruleForm.oneName = `${data[0].userName} - ${data[0].phone}`;
      this.selectNum = nameList.length;
      this.ruleForm.nameList = nameList;
      // 拿到所有用户的 userId
      this.ruleForm.userIds = data.map(item => item.userId);
      this.selectUserList = data;
    },
    // 关闭 Tooltip
    closeTooltip() {
      this.isShowTooltip = false;
    },
    // 提交表单
    submit() {
      this.$refs.ruleForm.validate(valid => {
        if (valid) {
          this.$message({
            message: '提交成功',
            type: 'success'
          });
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
  }
}
</script>

在这里插入图片描述

完整代码

selectUser.vue

// selectUser.vue
<template>
  <div>
    <el-dialog title="请选择项目人员" :visible.sync="isShow" width="1050px" :before-close="handleClose" center
      :show-close="false" :close-on-click-modal="false" append-to-body :close-on-press-escape="false"
      class="dialog_class">

      <div class="content">
        <el-checkbox-group v-model="userIds" class="checkbox-con" @change="handleCheckedCitiesChange">
          <el-checkbox v-for="item in userList" :key="Math.random()" border :label="item.userId">{{ `${item.userName} -
            ${item.phone}` }}</el-checkbox>
        </el-checkbox-group>
      </div>

      <span slot="footer" class="dialog-footer">
        <el-button class="btn submit" type="primary" @click="ok">确 定</el-button>
        <el-button class="btn cancel" @click="cancel">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import { getUser } from '@/api/prokect.js';

export default {
  name: "selectUser",
  data() {
    return {
      userList: [], // 人员列表
      userIds: [], // 选中的用户id
      isShow: false,
      selectioneds: [], // 选中的项
    }
  },
  methods: {
    show({ selectioneds = [] }) {
      this.isShow = true;
      this.query();
      if (selectioneds.length > 0) {
        this.userIds = selectioneds.map(item => item.userId);
        this.selectioneds = selectioneds;
      }
    },
    // 查询人员列表
    query() {
      getUser().then(({ data: { userList } }) => {
        this.userList = userList;
      })
    },
    // 多选
    handleCheckedCitiesChange(value) {
      console.log(value); // value勾选的所有项
      this.selectioneds = []; // 先初始化
      this.userIds = [];
      value && value.forEach(v => {
        // 存储用户id
        this.userIds.push(v);
        this.userList.forEach(w => {
          if (v === w.userId) {
            // 选中的项
            this.selectioneds.push(w);
          }
        })
      });
    },
    handleClose(done) {
      done();
    },
    ok() {
      this.$emit("selectUser", this.selectioneds);
      this.cancel();
    },
    cancel() {
      this.selectioneds = [];
      this.userIds = [];
      this.userList = [];
      this.isShow = false;
    },
  }
}
</script>

<style lang="scss" scoped>
::v-deep .text-left .el-form-item .el-form-item__label {
  font-size: 15px;
  color: #333;
  font-weight: 400;
}

.pagination {
  float: right;
  padding-top: 18px;
}

.radio-con .el-radio,
.checkbox-con .el-checkbox {
  margin: 20px 20px 0 10px;
  width: 216px;
}

::v-deep .el-dialog {
  margin-top: 5vh !important;
  padding-bottom: 78px;
  max-height: 90vh !important;
  min-height: 300px;
  overflow: hidden;

}

.content {
  overflow-y: scroll;
  max-height: 72vh;
  min-height: 56px;

  &::-webkit-scrollbar {
    width: 7px;
    height: 7px;
    background-color: #fff;
  }

  &::-webkit-scrollbar-thumb {
    border-radius: 5px;
    background-color: rgba(144, 146, 152, 0.3);
  }
}

::v-deep.el-dialog__footer {
  padding: 20px;
  width: 100%;
  position: absolute;
  background-color: #fff;
  bottom: 0;
  z-index: 200;
}
</style>

index.vue 文件

// index.vue
<template>
  <div>
    <el-form :model="ruleForm" ref="ruleForm" :rules="rules" label-position="left" label-width="86px" class="ruleForm">
      <el-row class="row-from">
        <el-col class="text-left col-item">
          <el-form-item label="项目名称" prop="projectName">
            <el-input size="medium" v-model="ruleForm.projectName" placeholder="请输入项目名称">
            </el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row class="row-from">
        <el-col class="text-left col-item">
          <el-form-item label="项目年份" prop="createYear">
            <el-date-picker size="medium" v-model="ruleForm.createYear" type="year" value-format="yyyy"
              placeholder="请选择年份" id="input">
            </el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row class="row-from">
        <el-col class="text-left col-item">
          <el-form-item label="项目成员" class="typeface" prop="oneName">
            <el-tooltip class="item" size="medium" effect="dark" :disabled="selectNum == 0" placement="top"
              v-model="isShowTooltip">
              <div slot="content" class="tooltip-con">
                <div v-for="item in selectUserList" :key="item.userId" class="size16 team-text">{{ `${item.userName} -
                  ${item.phone}` }}</div>
                <i class="el-icon-close close" @click="closeTooltip"></i>
              </div>
              <el-badge :value="selectNum" class="item" type="primary">
                <el-input size="medium" v-model="ruleForm.oneName" clearable @focus="showDialog" @clear="clearName"
                  placeholder="请选择"></el-input>
              </el-badge>
            </el-tooltip>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row class="row-from">
        <el-col class="text-left">
          <el-button class="btn select" size="medium" @click="submit" type="primary">提交</el-button>
          <el-button class="btn select" size="medium" @click="reset" type="primary">重置</el-button>
        </el-col>
      </el-row>
    </el-form>
    <select-user ref="selectUser" @selectUser="selectUser"></select-user>
  </div>
</template>

<script>
import selectUser from '@/views/popupAndSelect/selectUser.vue';

export default {
  name: 'popupAndSelect',
  data() {
    const checkOneName = (rule, value, callback) => {
      console.log('checkTeam::: ', value);
      if (!value) {
        callback(new Error('请选择和作社项目组名称'))
      } else {
        callback()
      }
    };
    return {
      isShowTooltip: false,
      selectNum: 0,
      rules: {
        oneName: [
          { required: true, message: '请选择名字', trigger: 'blur,change' },
          { validator: checkOneName, trigger: 'change' }
        ],
        projectName: [
          { required: true, message: '请输入项目名称', trigger: 'blur' },
        ],
        createYear: [
          { required: true, message: '请选择年份', trigger: 'change' },
        ],
      },
      ruleForm: {
        projectName: "",
        createYear: "",
        nameList: [],
        userIds: [],
        oneName: "",
      },
      selectUserList: [],
    }
  },
  components: { selectUser },
  methods: {
    showDialog() {
      this.$refs.selectUser.show(this.selectUserList)

    },
    selectUser(data) {
      console.log('data::: ', data);
      // 拿到所有用户的 userName
      let nameList = data.map(item => item.userName);
      this.ruleForm.oneName = `${data[0].userName} - ${data[0].phone}`;
      this.selectNum = nameList.length;
      this.ruleForm.nameList = nameList;
      // 拿到所有用户的 userId
      this.ruleForm.userIds = data.map(item => item.userId);
      this.selectUserList = data;
    },
    clearName() {
      this.ruleForm.oneName = '';
      this.selectNum = 0;
      this.ruleForm.nameList = [];
      this.ruleForm.userIds = [];
      this.selectUserList = [];
    },
    // 关闭 Tooltip
    closeTooltip() {
      this.isShowTooltip = false;
    },
    // 提交表单
    submit(){
      this.$refs.ruleForm.validate(valid => {
        if (valid) {
          this.$message({
            message: '提交成功',
            type: 'success'
          });
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    // 重置表单
    reset(){
      this.$refs.ruleForm.resetFields();
      this.ruleForm.nameList = [];
      this.ruleForm.userIds = [];
      this.selectNum = 0;
      this.selectUserList = [];
    }
  }
}
</script>

<style lang="scss" scoped>
.ruleForm {
  display: flex;
  flex-direction: column;

  .row-from {
    flex-wrap: wrap;

    &::before {
      display: none;
    }

    &::after {
      display: none;
    }

    .col-item {
      width: 520px;
    }
  }

}

.text-left {
  text-align: left;
}

::v-deep .el-input__inner {
  width: 434px;
}

.tooltip-con {
  position: relative;
  padding: 24px 36px;

  .close {
    position: absolute;
    top: 0;
    right: 0;
    cursor: pointer;
    font-size: 18px;
  }
}
</style>

表单字段 oneName 的验证规则:

  • 配置必填项验证,点击提交按钮时触发 blurchange 事件。
  • 配置自定义函数 checkOneName ,在 oneName 值发生改变时触发 change 事件。

还有一点得注意,如果需要回显表单数据,通过后端接口获取数据后,千万不要直接赋值给 ruleForm 对象(例: this.ruleForm = res.data),因为 v-model 绑定的是 oneName, 而 oneName 是前端自己定义的属性,后端接口返回的对象里面没有 oneName 属性,直接赋值会覆盖原有的 ruleForm 对象,导致提交的时候就会一直校验不通过。

正确用法: this.ruleForm= Object.assign(this.ruleForm, res.data);

实现效果
在这里插入图片描述

总结

通过上述步骤,我们实现了一个功能完整的表单校验,其中项目成员字段通过点击输入框显示弹窗,并在关闭弹窗时自动给输入框赋值。同时,通过定义验证规则确保了必填项的正确性和完整性。这种设计不仅提高了用户体验,也保证了数据的有效性和一致性。

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

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

相关文章

Python 从入门到实战17(正则表达式操作)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了正则表达式的语法。今天进一步讨论一下正则表…

代码随想录训练营Day4 | 24. 两两交换链表中的节点 | 19.删除链表的倒数第N个节点 | 面试题 02.07. 链表相交 | 142.环形链表II

今日阅读文档&#xff1a;代码随想录 (programmercarl.com) Leetcode 24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只…

uview-plus 表单校验 相关字段有数据有值的情况下非空验证失败问题

你们好&#xff0c;我是金金金。 场景 uniapp编写h5及小程序&#xff0c;组件库用的uview-plus&#xff0c;在进行表单校验的过程中&#xff0c;数据回显 数量明明是有值的&#xff0c;还是依旧提示填写数量&#xff08;重新再次手动输入才能校验通过&#xff0c;明显是存在问题…

Python 课程6-Pandas 和 Matplotlib库

前言 在数据科学和数据分析领域&#xff0c;Pandas 和 Matplotlib 是两个最常用的 Python 库。Pandas 主要用于数据处理和分析&#xff0c;而 Matplotlib 则用于数据的可视化。它们的结合能够帮助我们快速、直观地展示数据的趋势和规律。在这篇详细的教程中&#xff0c;教程中将…

如何对离线数仓和准实时数仓进行精准把控?

数仓是指将企业中各个业务系统产生的数据进行汇总、清洗、转化和整合&#xff0c;以便为企业提供决策支持和数据分析的存储和管理系统。 离线数仓和准实时数仓&#xff0c;这两种数据仓库模式&#xff0c;各有其特点&#xff0c;根据其特点和适用的应用场景选择合适的仓库模式…

Nginx快速使用

如果本系列文章对您有帮助&#xff0c;可以 star 一下我的 limou-learn-note&#xff0c;求求惹(๑&#xff1e; &#xff1c;)☆♡~ 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff…

2024桥梁科技两江论坛——第二届桥梁工程安全与韧性学术会议

文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网&#xff1a;https://ais.cn/u/vEbMBz提交检索&#xff1a;EI Compendex、IEEE Xplore、Scopus 三、大会介绍 2024年桥梁科技两江论坛——第二届桥梁工程…

七、结合Landsat、夜光数据建成区提取——K均值聚类和监督分类提取精确的建成区边界

一、前言 前面已经明确K均值聚类确定初步城市边界范围,其实除了使用Arcgis可以实现聚类分析之外,SPSS也可以实现,但是毕竟我们需要在空间层面体现聚类效果,SPSS能实现数据制表的结果,所以还是建议大家采用Arcgis进行聚类分析,前文的聚类分析不是很详细,这里再次详细给大…

刚刚!1区top“灌水”神刊,39天Accepted!真正的沾边可录

01 沾边即录-快刊 1、数据科学类 SCI • 影响因子&#xff1a;2.0-3.0 • 期刊分区&#xff1a;JCR1区&#xff0c;中科院2区-Top • 接收领域&#xff1a;数据科学的进展和应用研究&#xff0c;如&#xff1a;大数据处理和分析、人工智能、物联网、以及数据科学与计算技术的…

uni-app 聊天界面滚动到消息底部

目录 问题 组件 页面 使用的API 总结 问题 当你发一个消息&#xff0c;但是消息却需要你自己向下滑你才能看见&#xff0c;否则一直呗输入框挡住。 组件 scroll-view组件&#xff1a;一般使用scroll-view组件的都采取使用其scroll-into-view或者scroll-to属性。 scroll-…

Spring3-IoC1-IoC容器、基于xml管理bean

目录 IoC容器 概述 依赖注入 IoC容器在Spring中的实现 基于xml管理bean 获取bean 依赖注入 setter注入 构造器注入 特殊值处理 字面量赋值 null值 xml实体 CDATA节 特殊类型属性注入 对象类型属性注入 方式一&#xff1a;引用外部bean 方式二&#xff1a;内部…

设背包密码系统的超递增序列为A=(3,4,9,17,35),乘数t=19,模数k=73,试对good night加密

PS:后续在此基础上更新Java代码 1.超递增序列含义 超递增序列是指一个正整数序列&#xff0c;其中每个元素a[i]&#xff08;i≥2&#xff09;都大于它前面所有元素之和&#xff0c;即a[i] > &#xff08;a[1] a[2] ... a[i-1]&#xff09; 2.加密公式 C&#xff08; B…

html+css+js网页设计 旅游 大理旅游7个页面

htmlcssjs网页设计 旅游 大理旅游7个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过

中国信通院近期正式发布《大模型驱动的媒体生产与处理》标准&#xff0c;阿里云智能媒体服务&#xff0c;以“首批首家”通过卓越级评估&#xff0c;并在9大模块50余项测评中表现为“满分”。 当下&#xff0c;AI大模型的快速发展带动了爆发式的海量AI运用&#xff0c;这其中&a…

异构仿真:打造更可靠的综合化航空电子软件

综合化航空电子系统是一类典型的安全关键系统&#xff0c;具有分布式、异构、计算资源和物理资源强耦合等特征。随着IMA&#xff08;Integrated Modular Avionics&#xff0c;综合模块化航空电子&#xff09;系统趋于复杂化和智能化&#xff0c;系统的功能越来越多地采用软件来…

权威认可,信源信息再次斩获国家发明专利

近日&#xff0c;郑州信源信息技术股份有限公司&#xff08;简称“信源信息”&#xff09;继获得“一种安全认证方法及系统”发明专利后&#xff0c;再次喜获国家知识产权局颁发的发明专利“适用于多环境OFD文档的投标文件处理方法及系统”。本次发明专利的获得&#xff0c;不仅…

华为云ROMA Connect聚焦创新,在Gartner®峰会发布智能集成新视角

9月9日-9月10日&#xff0c;Gartner全球应用创新及商业解决方案峰会在伦敦举行&#xff0c;围绕企业应用策略、智能平台工程和生成式AI&#xff0c;来自全球的1700业内专家共同探讨新趋势带来的机遇和挑战。华为云ROMA Connect发表 “人工智能”主题演讲之一&#xff0c;展现新…

黑龙江等保测评二级系统费用解析:如何合理预算?

在信息安全日益受到重视的今天&#xff0c;等保测评成为企业合规的重要环节。尤其是在黑龙江&#xff0c;随着网络安全法的实施&#xff0c;越来越多的企业开始关注等保测评的相关费用。那么&#xff0c;黑龙江等保测评二级系统的费用是如何计算的呢&#xff1f; 首先&#xf…

linux 定时将固态硬盘数据备份至机械硬盘

需求背景 为了加强公司数据的安全性和可靠性&#xff0c;我们将实施一项数据备份策略。该策略涉及将服务器上的固态硬盘&#xff08;SSD&#xff09;中的关键数据定期备份到机械硬盘&#xff08;HDD&#xff09;上。这一过程旨在保护数据免受意外删除、硬件故障或其他潜在风险…

【诉讼流程-健身房-违约认定-私教课-诉讼书前提材料整理-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(2)】

【诉讼流程-健身房-违约-私教课-前期法律流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解&#xff08;2&#xff09;】 &#xff08;1&#xff09;前言说明1、目的2、一个小测试1、更换原教练2、频繁更换教练3、上课估计拖课&#xff0c;占用上课时间&#xff0c;抽烟等。4、以…