我需要将保存到DB的值设置为大写。 我的环境是Java,我正在使用jsp / HMTL / js作为前端表单。
我有建议修改我的模型的getter / setter,但我相信这可能很危险,因为模型可能会在各种地方使用,而不是所有地方都需要严格的大写值。
以前我尝试使用
在网络表单上将值设置为大写style="text-transform:uppercase"
但是当值保存到db时,它会保留小写值。
是否有人对此有任何注释或想法?
谢谢, Dearg
更新
@Vimal Bera我试过这个:
$('#xyz').on('input', function() {
$('#xyz').val().toUpperCase();
});
但我承认我的经验不是很好,不用说这不起作用。
答案 0 :(得分:2)
text-transform: uppercase
将显示给客户端显示为大写的文本。从javascript的角度来看,文本仍然是小写的。我做了一个测试,可以在 JSFiddle
从输入中获取值的方式类似于
var textinput = document.getElementById("yourinput").value;
在提交给db之前,您应该确保在textinput
上执行以下操作:
var textinput = document.getElementById("yourinput").value.toUpperCase();
而不是.on('input')
,将您的javascript绑定到<form>
,如下所示:
<form action="" onsubmit="DoSomethingToInput();">
function DoSomethingToInput() {
document.getElementById('ppsn').value.toUpperCase();
return true // this allows the form to submit
}
答案 1 :(得分:1)
在Java中,在类中提供额外的getter / setter,使用注释例如@Column(name="DB_Column")
,在getProperty().toUpperCase();
之类的getter中执行某些操作,然后将其他属性(您不希望因为担心弄乱模型而更改)标记为{{1所以Hibernate不会试图坚持它。例如,假设catName是您要存储在数据库中的属性:
@Transient
要求客户端案例操作的解决方案是错误的选择。您不希望修改状态客户端,然后在服务器端依赖它。始终在服务器端验证用户输入。
答案 2 :(得分:0)
将值存储在DB中时,请使用UPPER()转换大小写。
答案 3 :(得分:0)
您不是在谈论更改Display Purposes&amp;的价值。因此改变前端(这里的JS)不是正确的方法。
如果您希望将值作为大写存储在DB中 - 最好在服务器上处理它(这里是Java / Hibernate)。
我相信,完成此操作的最简单方法是在@Entity类的Set方法中将值转换为大写 - 如下所示。
public void setCatName(String catName) {
this.catName= catName.toUpperCase();
}
如果您改变意图并将其保留仅用于显示目的 - 您也可以在后端执行此操作。
然后更改get方法以返回大写Case值而不是Set方法。
但是,最好在前端做这些事情 - 这是为了迎合不同的用例。