【发布时间】:2017-01-24 11:27:00
【问题描述】:
我的 java 类中有一个名为 createdOn 的属性。我希望将其隐藏在前端,以便用户无法设置它(我在后端设置它的值)。但是当我在我的 JSP 页面中使用以下代码行时,我无法将其发布到控制器(从 JSP 发布到控制器的数据在语法上不正确)。
<form:hidden path="createdOn"/>
在我的 java 类中它看起来像:
public Date getCreatedOn() {
return createdOn;
}
public void setCreatedOn(Date createdOn) {
this.createdOn = createdOn;
}
由于我使用相同的表单来编辑字段,所以我必须在 JSP 页面中使用 createdOn 字段(否则它将变为 null)。 我可以通过在 setter 和 getter 方法中将日期格式转换为字符串来解决这个问题,反之亦然。前端本身是否有任何替代解决方案?
【问题讨论】:
-
当数据被编辑并提交到后端时,您是否在使用新值更新之前从数据库中加载数据?如果您加载数据,
createdOn将具有原始值。 -
关于隐藏字段 - 它并不是真正隐藏的!用户可以轻松地进行一些浏览器调试、拦截 POST 并更改 createdOn 值。不是那么有趣的故事 - JSP 用于在服务器收到 POST 时收集一些信息并发送电子邮件。好吧,JSP 将收件人电子邮件地址作为隐藏字段,以便服务器进程知道将电子邮件发送到哪里。这是一个公共页面。安全扫描发现该漏洞基本上允许任何人拦截 POST,更改收件人隐藏值,并将服务器用作垃圾邮件机器。
-
嗨 W-S,我可以将数据从数据库加载到我的 JSP 页面,但是如果我不在前端的任何地方使用 createdOn 字段,那么当我发布修改后它将变为 null数据。所以我试图在前端单独隐藏字段。
标签: java jsp spring-mvc