Java 如何提交表格?
我有一个有许多不同字段的表单,这个表单的字段与两个表相关联, 提交表单后,我应该如何仅更新受影响的表 表凭证Java 如何提交表格?,java,jquery,jsp,jakarta-ee,struts2,Java,Jquery,Jsp,Jakarta Ee,Struts2,我有一个有许多不同字段的表单,这个表单的字段与两个表相关联, 提交表单后,我应该如何仅更新受影响的表 表凭证 ID username password question answer 表用户 ID name surname age CredentialID 假设用户只是更新他/她的名字。提交表单后,我只需要更新用户表的名称字段,而不是凭证表的任何字段,因为其关联字段尚未更改。我知道一种方法是用类检查提交的值,还有其他选择吗? 我不想更新所有值以提高性能
ID
username
password
question
answer
表用户
ID
name
surname
age
CredentialID
假设用户只是更新他/她的名字。提交表单后,我只需要更新用户表的名称字段,而不是凭证表的任何字段,因为其关联字段尚未更改。我知道一种方法是用类检查提交的值,还有其他选择吗?
我不想更新所有值以提高性能和降低数据库成本的原因。此外,有没有办法在客户端进行比较?我正在使用prepareStatement更新数据库
阶级
形式
... 名称
姓
年龄
用户名
密码
问题
回答。。。
您有以下选择:
<form>
<!-- credential fields -->
<input type="text" name="username" id="username" onchange="credentialChanged()"/>
<input type="text" name="question" id="question" onchange="credentialChanged()" />
...
<!-- indicates the server if credential fields have changed -->
<input type="hidden" name="credential-changed"
id="credential-changed" value="false" />
<!-- uer fields -->
<input type="text" name="name" id="name" onchange="userChanged()"/>
<input type="text" name="surname" id="surname" onchange="userChanged()"/>
...
<!-- indicates the server if user fields have changed -->
<input type="hidden" name="user-changed"
id="user-changed" value="false" />
</form>
在服务器端,您可以获取隐藏字段的值,并知道这些值是否已更改
注意:如果用户将字段的值(例如)从“UserXYZ”更改为“UserABC”,然后将其更改回“UserXYZ”,则相应隐藏字段的值将设置为true。您必须添加额外的Javascript来比较客户端上的新旧值,但想法应该很清楚。更新那些未更改的值不会有什么区别,因为相同的值将被覆盖。这就是您从表单中检索值的方式吗?这些表之间是否存在任何关系?您如何更新数据库?你在用hibernate/JPA还是别的什么?@Umeshawashi,我在用preparestatement@PSR,问题是更新如果我选择第二个选项,那么每个表都会有一个提交按钮,对吗?那么如果我有10个表格呢?那么我认为第一个选项应该和提交表格之前一样好,它将确定应该谈论哪个表格。我认为第一个方法不是一个好主意,需要很长时间的比较,并且仍然会影响性能,我认为应该在客户端而不是服务器端执行某些操作。请尝试以下操作:
函数form1FieldChaged(){form1Changed=true;}函数form2FieldChaged(){form2Changed=true;}函数submit-form(){if(form1Changed==true){updatetable1}否则if(form2Changed==true){updatetable2}
<s:form action="register" method="POST">
... name
surname
age
username
password
question
answer ...
</s:form>
<form>
<!-- credential fields -->
<input type="text" name="username" id="username" onchange="credentialChanged()"/>
<input type="text" name="question" id="question" onchange="credentialChanged()" />
...
<!-- indicates the server if credential fields have changed -->
<input type="hidden" name="credential-changed"
id="credential-changed" value="false" />
<!-- uer fields -->
<input type="text" name="name" id="name" onchange="userChanged()"/>
<input type="text" name="surname" id="surname" onchange="userChanged()"/>
...
<!-- indicates the server if user fields have changed -->
<input type="hidden" name="user-changed"
id="user-changed" value="false" />
</form>
function credentialChanged(){
document.getElementById("credential-changed").value = "true";
}
function userChanged(){
document.getElementById("user-changed").value = "true";
}