Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用spring和hibernate更新数据库中的用户表单字段时避免空字符串_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何在使用spring和hibernate更新数据库中的用户表单字段时避免空字符串

Java 如何在使用spring和hibernate更新数据库中的用户表单字段时避免空字符串,java,spring,spring-mvc,Java,Spring,Spring Mvc,我刚开始使用hibernate进行spring。在用户登录之后,我需要更新用户名、密码、,当任何用户想要更改这些字段时,emailId。但在这里,用户可以更改任何字段,例如,他可以更改emailId,他留下的密码和用户名为空字符串…但在服务中,我只想更新他在数据库中给出值的字段,如果他留下任何字段为空字符串,我想避免该字段(但它正在更新数据库中的空字符串)。我不确定他一直想更改哪个字段,即所有字段或任何字段。任何人都可以建议我如何满足此要求。提前感谢 以下是jsp文件: <% St

我刚开始使用hibernate进行spring。在用户登录之后,我需要更新用户名、密码、,当任何用户想要更改这些字段时,emailId。但在这里,用户可以更改任何字段,例如,他可以更改emailId,他留下的密码和用户名为空字符串…但在服务中,我只想更新他在数据库中给出值的字段,如果他留下任何字段为空字符串,我想避免该字段(但它正在更新数据库中的空字符串)。我不确定他一直想更改哪个字段,即所有字段或任何字段。任何人都可以建议我如何满足此要求。提前感谢

以下是jsp文件:

  <%
  String path=request.getContextPath();
  %>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">`enter code here`
   <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>Untitled Document</title>
  <link href="<%=path %>/css/style.css" rel="stylesheet" type="text/css" />
 </head>

   <body>
  <form action="modifyUser.htm" method="get">
   <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0" 
  class="fields">
 `enter code here`<tr>
   <td width="33%">User Name <span class="star"></span></td>
  <td width="67%"><input name="userName" type="text" /></td>
  </tr>
  <tr>
   <td>Password</td>
   <td><input name="password" type="password" /></td>
  </tr>
  <tr>
  <td height="35">Email ID </td>
  <td><input name="emailId" type="text" /></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
   <td align="left"><input type="image" src="<%=path %>/images/update.png" height="2 5" 
        `width="65" /></td>
     </tr>
    </table>
       </form>
       </body>
         </html>

有更优雅的方法来完成您正在做的事情(比如使用spring的
表单
元素:)

但是对于您发布的代码,您可以这样做:

if (org.springframework.util.StringUtils.hasText(password)){
    user.setUserPassword(password);
}

这同样适用于其他字段。

只需加载用户从数据库中忽略的字段。然后您就可以自由地再次存储整个(ORM映射的)域对象。

您可以使用spring内置的验证程序界面


谢谢你的建议……这里是验证程序实现,我应该抛出一个错误,但我不想抛出一个错误,我只想在更新中忽略该字段。我不确定有多少字段将始终更新,但如果他将任何字段留空,我必须在更新中忽略该字段。谢谢你的建议……这里是验证程序实现我应该抛出一个错误,但我不想抛出一个错误,我只想从更新中忽略该字段。我不确定有多少字段将始终更新,但如果他将任何字段留空,我必须从更新中忽略该字段。这样,我必须用3个字段编写很多if条件如果你不想使用sping的
表单
元素,然后在每个
set
方法周围添加一个if语句似乎是我唯一的方法。这样,如果文本字段未完成,则
user
字段将不会更新,并且它将保留从会话加载时的值。是的,我也认为这是唯一的解决方案..谢谢回复..have很好的一周感谢你的建议…我不确定有多少字段会一直更新,但如果他留下任何字段为空,我必须在更新中忽略该字段。
if (org.springframework.util.StringUtils.hasText(password)){
    user.setUserPassword(password);
}