我一直在研究春季幾個星期,所以我不知道處理某些問題時使用的「邏輯」。如何處理表單錯誤(與類字段不匹配)與彈簧
我馬上告訴你,我的問題不是如何檢查2個表單域是否匹配!我只是用郵件和確認郵件來舉個例子。
我知道如何通過在對象上使用@Valid
註解來處理表單錯誤,但是如果表單包含我的類沒有的字段會怎麼樣?
假設有一個表格可以註冊:我有一個名爲User的類,名稱,年齡和電子郵件字段。我沒有與
<form:errors path="name" cssClass="error">
<form:errors path="age" cssClass="error">
<form:errors path="mail" cssClass="error">
問題處理錯誤現在讓我們假設我想添加一個字段在我的形式,被稱爲例如confirmEmail,檢查,服務器端,該電子郵件是正確的。我應該如何處理它?我無法在我的班級用戶中創建另一個名爲confirmEmail的字段,但對我而言聽起來並不正確。
這是我的形式
<form:form action="signUpSent" method="post" commandName="utente">
<form:input path="nome"/>
<form:errors path="nome" cssClass="DivErroriSpring"/>
<form:input path="cognome"/>
<form:errors path="cognome" cssClass="DivErroriSpring"/>
<form:input path="email"/>
<form:errors path="email" cssClass="DivErroriSpring"/>
<form:input path="confermaEmail"/>
<form:errors path="confermaEmail" cssClass="DivErroriSpring"/>
<input type="submit">
</form:form>
這是我的類用戶(Utente意大利)
public class Utente {
@NotEmpty
@Size(min=3,max=20)
private String nome;
@NotEmpty
@NotNull
@Size(min=3,max=20)
private String cognome;
@NotEmpty
@Email
private String email;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
正如你可以看到,在我班上的用戶(在意大利Utente)我不知道有一個名爲confirmMail(意大利語confermaEmail)的字段,因爲它不是正確的,是嗎?
爲了更加清楚,問題是:當表單字段不匹配我的類用戶的字段時,我應該如何處理錯誤?
您是否嘗試用'@FieldMatch(first =「email」,second =「confirmEmail」,message =「電子郵件字段必須匹配」)註釋您的類? – lifus 2014-09-24 09:08:05
我的問題不是如何檢查郵件。我的問題是,在我的表格中,我有一個字段,在我的班級用戶中沒有。在我的班級用戶沒有一個字段「confirmMail」,所以當我提交表單時,我得到一個錯誤,因爲表單字段與類用戶字段不匹配。我不知道我是否解釋得很好 – MDP 2014-09-24 09:22:18
不要將您的用戶用作表單對象。爲您的Web圖層創建一個單獨的對象。基本上你的網絡和實際業務有不同的域對象。 – 2014-09-24 09:29:13