通过表单隐藏域向后台传值

解决权限字段在更新时显示名称被误传的问题。采用隐藏域方法,确保数据库存储的是数值而非显示名称,有效避免异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

数据库使用数值存储权限(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 属性的值。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug菌¹

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值