今天怂怂就为大家分享一篇在写毕设的时候遇到一个问题以及如何解决问题的,具有很好的参考价值,希望对大家有所帮助。一起跟随怂怂过来看看吧!

数据库使用数值存储权限(role)这个字段 。

由于项目需求,页面需显示具体权限角色名称;比如 role="0" 需显示成 “系统管理员 ”。

这是我的源码:

<c:if test="${bean.role==0}"><div class="unit"><label>权限:</label><input type="text" name="role" size="30" value="系统管理员" readonly /></div>
</c:if>

可是发现一个问题,当你在进行update操作的时候,value="系统管理员"也被一并传入数据库(如下图),这就不符合数据库字段的设计,肯定是会报异常;

如下有两种解决方案:

方案一:不推荐使用,比较笨的方法

通过对后端update接口处进行值的判断,再重新赋值的方式进行提交,若是角色分配过多,就容易造成代码冗余!

User bean = userDao.selectUser(id);if(request.getParameter("role")=="系统管理员" || request.getParameter("role").equals("系统管理员")) {bean.role="0";
}

方案二:通过input隐藏域传值【推荐使用】

【隐藏域】隐藏域是指在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。

代码实现:

<c:if test="${bean.role==0}"><div class="unit"><label>权限:</label> <input type="text" size="30" value="系统管理员" readonly /><input  name="role" value="0" type="hidden"/> //通过隐藏域把value="0"传到后台</div>
</c:if>

解释一下:第一个input框只是用作效果显示而不会被提交到后台中,起着关键作用的就是name属性;

name 属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据,也就是你后端通过 request.getParameter(" 参数"),其中的参数也就是你 name 的属性值(图上:name="role")。

注意:一旦使用隐藏域绑定role的value值,在修改role的同时,表单提交到后端,role值还是以隐藏域绑定的value值提交,所以,像权限(role)修改操作,就不言而喻了!切记!!

--------------------------------拓展---------------------------------

1、<input> 标签的 name 属性

定义和用法

name 属性规定 input 元素的名称。

name 属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据。

注释:只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。

语法

<input name="value">

2、HTML DOM Hidden 对象

Hidden 对象代表一个 HTML 表单中的某个隐藏输入域。

这种类型的输入元素实际上是隐藏的。这个不可见的表单元素的 value 属性保存了一个要提交给 Web 服务器的任意字符串。如果想要提交并非用户直接输入的数据的话,就是用这种类型的元素。

在 HTML 表单中 <input type="hidden"> 标签每出现一次,一个 Hidden 对象就会被创建。

您可通过遍历表单的 elements[] 数组来访问某个隐藏输入域,或者通过使用document.getElementById()。

Hidden 对象的属性

属性 描述
alt 设置或返回当不支持隐藏输入域时显示的替代文本。
form 返回一个对包含隐藏域的表单的引用。
id 设置或返回隐藏域的 id。
name 设置或返回隐藏域的名称。
type 返回隐藏输入域的表单类型。
value 设置或返回隐藏域的 value 属性的值。

通过表单隐藏域向后台传值相关推荐

  1. php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例

    搜索热词 form里可以防止隐藏控件hidden,用来防止那些不希望让用户看到的信息,这个类可以把get和post里的变量放到hidden控件里,不用在单独遍历get和post了,PHP把get.po ...

  2. input值不可变、隐藏input(表单隐藏域)

    input标签值不可变.隐藏标签 一.值不可变 方法1:readonly 方法2:disabled readonly 和 disabled的区别: 二.隐藏\标签(表单隐藏域) 一.值不可变 在写前端 ...

  3. 【HTML】表单隐藏域hidden

    1.什么是隐藏域 隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 2.怎么创建隐藏域 HTML ...

  4. java获取表单隐藏域的值,Servlet中使用表单隐藏域

    Servlet中使用表单隐藏域 表单隐藏域也是一种会话跟踪技术. 如果使用了"表单隐藏域",将使用一个隐藏(不可见)文本域来维护用户的状态. 在这种情况下,我们将信息存储在表单的隐 ...

  5. 表单中隐藏域的html代码是,JS中input表单隐藏域及其使用方法_心病_前端开发者...

    一.表单隐藏域 隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式: <input ...

  6. form表单隐藏域有什么作用

    隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式:在form表单中写如下代码 < ...

  7. Servlet会话管理一(URL重写和表单隐藏域)

    会话可以简单的理解为客户端用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器的整个过程称为一个会话.即一个客户端用户和服务器端进行通讯的过程,也是客户端和服务器端之间的数据传 ...

  8. 表单隐藏域与display:none

    有时候前端进行表单填写是分步骤的,每一步的时候其他步骤相关的表单视图不可见: 针对"不可见",以下有两种处理方式: ①display:none 这种方式呢,比较简单,就是将三个步骤 ...

  9. HttpServlet 会话管理(一)(URL重写 表单隐藏域 简单示例)

    本文代码转载自 <Servlet.JSP和Spring MVC初学指南> 会话管理的目的是记录用户访问的状态, 使得之前的Http访问状态可以被之后的应用直接使用,状态的记录即通过请求传值 ...

最新文章

  1. Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(一)
  2. SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户
  3. minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
  4. 25个关键技术点,带你熟悉Python
  5. 【SpringCloud】Spring cloud Alibaba Nacos 服务注册与配置中心 命名空间 Data Id
  6. 数据仓库ETL之DataX(一)简介
  7. 联想终成全球PC第一
  8. HEL上清除Oracle10g clusterware的失败安装
  9. 《流畅的Python》读书笔记——Python使用一等函数实现设计模式
  10. [Tomcat]无法使用tomcat6.exe启动服务解决办法
  11. 在Android 8.0之后版本上添加Hidl Service
  12. python实现嵌套功能_python3 os进行嵌套操作的实例讲解
  13. Python PDF转image方法小结
  14. 尚学堂马士兵linux教程之文件管理
  15. 【技巧记录】如何批量制作文件夹/文件夹名
  16. 怎样用计算机计算工程量,送给用EXCEL计算工程量的朋友们一个好方法
  17. java mail张_javaMail操作QQ邮箱发送邮箱 Demo
  18. 设计模式--设配器模式
  19. hdu校赛—1004
  20. 基于Android NFC传感器读取身份证信息demo

热门文章

  1. 汇编程序 JNZ(或JNE)(Jump if not zero,or not equal)
  2. java使用rocksdb_RocksDB简单使用
  3. 毫无基础的人如何入门 Python ?
  4. VS Code插件之 Markdown 篇
  5. IOS数据存储5种方式
  6. 同胞最爱奢侈品代购LV位居首位
  7. 程序员麦兜【编程笔记】-线程的概念及创建
  8. CNN入门之cnn架构和cnn卷积、采样
  9. anaconda安装早期tensorflow环境
  10. [视频]学打羽毛球41-45