我知道一种方法是使用类检查提交的值还有其他选择吗?
对我来说,您似乎知道您可以通过将类的所有新变量与旧变量进行比较来在服务器端检查这一点,但是您希望有一种更快且更少资源密集型的方式。
因此,我如何实现这一点的基本想法是客户端(浏览器)需要检查“组”(凭据或用户)的值是否已更改并将此信息提交给服务器。我不确定使用 Struts 时的 HTML 标记,但基本上它看起来像这样:
<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>
然后您使用 javascript 函数credentialChanged()并userChanged()更新隐藏字段:
function credentialChanged(){
document.getElementById("credential-changed").value = "true";
}
function userChanged(){
document.getElementById("user-changed").value = "true";
}
在服务器端,您可以获取隐藏字段的值并了解这些值是否已更改。
注意:如果用户将字段的值从“UserXYZ”更改为“UserABC”,然后将其更改回“UserXYZ”,则相应隐藏字段的值将设置为 true。您将不得不添加额外的 Javascript 来比较客户端的新旧值,但这个想法应该很清楚。