2010-12-22 27 views
2

我有一個彈出界面窗體(modelAttribute),它顯示用戶信息。 用戶的電話號碼以格式化的方式顯示,但要求是該號碼保存到數據庫沒有任何標誌。Spring路徑綁定:它是直接綁定到變量還是它調用構造函數/設置?

所以在我的用戶對象的getter方法中,我按照規則格式化電話號碼,並在setter中將代碼移除特殊符號。 格式化部分工作正常,但setter部分我刪除跡象似乎並沒有發生。

在我的構造函數中我也做:

setTelephoneNumber(TelephoneNumber); 

所以構造函數也調用制定者。

我使用Spring 3.0.4和Spring-mvc。

關於這個問題的任何意見和如何解決它,將不勝感激。

編輯: 控制器部分:

model.addAttribute( 「用戶」,用戶);

JSP(縮短了一點,但這是要點submitUrl是由於門戶環境:

<form:form action="${submitUrl}" modelAttribute="user"> 
<form:input path="telephoneNumber"/> 
</form> 

型號telephoneNumber二傳手:

if(!StringUtils.isBlank(telephoneNumber)){ 
    this.telephoneNumber = telephoneNumber.replaceAll("[^0-9]", ""); 
} else{ 
    this.telephoneNumber= ""; 
} 

我是這麼認爲的,因爲價值的土地(間距)

+0

請張貼控制器,命令對象和相關部分的jsp。你是如何檢查setter沒有被調用? – Ralph 2010-12-22 08:55:23

回答

0

回到您的問題: Spring路徑綁定:它是直接綁定到變量還是它調用構造函數/ setters?

至於車費我瞭解Java文檔和一些代碼片段,Spring使用BeanWrapperBeanWrapperImpl)設置豆類(@see Reference: 5.4 Bean manipulation and the BeanWrapper)的值。而BeanWrapperImpl的行爲就像參考所說: 使用setter和getter來訪問「簡單」值。

它與5.4節中所述的參考文獻完全相同。1設置和獲取基本和嵌套屬性「:用於表達 」姓名「:

指示對應於方法的getName() 或isName()和setName屬性名 (..)

所以至少這個回答你的問題,所以我認爲你的問題的原因是一些其他的東西。

3

即使它不是你的問題的正確答案:

我強烈建議做格式化以其他方式再由二傳手吸氣

春3.0 provideds的東西,他們被稱爲 「類型轉換」

使用此會更清潔。

+0

在Spring 2.x中,你可以嘗試去做在活頁夾和財產編輯的幫助下進行轉換。 – Ralph 2010-12-22 09:08:28

+0

對不起,遲到的迴應(我昨天沒有訪問互聯網)。儘管掩碼當然是許多選項的一個選項,但問題在於格式取決於數字的種類。某些區域具有不同的格式。 – jack 2010-12-23 07:17:55