使用Hibernate将值设置为大写

时间:2014-11-19 15:27:54

标签: java javascript html database

我需要将保存到DB的值设置为大写。 我的环境是Java,我正在使用jsp / HMTL / js作为前端表单。

我有建议修改我的模型的getter / setter,但我相信这可能很危险,因为模型可能会在各种地方使用,而不是所有地方都需要严格的大写值。

以前我尝试使用

在网络表单上将值设置为大写
style="text-transform:uppercase"

但是当值保存到db时,它会保留小写值。

是否有人对此有任何注释或想法?

谢谢, Dearg

更新

@Vimal Bera我试过这个:

$('#xyz').on('input', function() {
    $('#xyz').val().toUpperCase();
});

但我承认我的经验不是很好,不用说这不起作用。

4 个答案:

答案 0 :(得分:2)

CSS中的

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方法。

但是,最好在前端做这些事情 - 这是为了迎合不同的用例。