看板 java 關於我們 聯絡資訊
※ 引述《ek0424 ()》之銘言: : 各位板上的大大好,最近小弟在學習spring這個framework : 在開發過程中有遇到一個問題,在網路上尋找許久的資料還是無解 : 目前因為前端部分有大量的表單欄位要做格式驗證處理,所以我參考了 : http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/ : 但是卻發現有個問題如下: : 1.不用Form表單做的話,可以達到同樣的驗證效果嗎? 我沒用過這個功能 不過這點應該自己試一次就可以知道有沒有用了 如果不行的話 可以自己寫一個Mapping參數值到POJO的功能 再傳入另一個method 效果應該一樣 例如: // Mapping Customer customer = ReflectionUtil.mapping(request, Customer.class); // Do validation and insertion String view = this.doAddCustomer(customer); private String doAddCustomer(@Valid Customer customer); 不過我自己在做後端表單驗證都是自己寫 畢竟有些參數驗證還滿麻煩的 你可以試試用Spring的Interceptor 在進入Controller之前就做好驗證 並根據是否為ajax要求做不同的回應內容 如此一來你的驗證程式碼都會在固定的一包package裡面 (如controller.interceptor.validation) 還可以用spring的xml配置隨意更換而不用動到原始碼 : 2.如果我的Form表單想用Ajax處理,然後一樣有驗證效果該怎麼做? 有一個偷吃步的方法 就是將Form表單的target指定給一個隱藏的iframe 這樣就跟平常submit form的流程差不多了 只不過回應內容要另外處理 不然就把表單內容放在DIV裡 在iframe裡用parent.doReplaceForm($("div").html()); 應該也可以吧XD? 如果你是想將form表單直接由ajax的方式傳送參數 可以使用 $(document.formName).serialize(); 做為ajax的data參數值 即可傳送整張表單的所有欄位 : 3.因為練習接案子,對方要求要有API文件,然後用JSON格式作溝通 : 很多表單的東西,都不是傳JSON作處理,該怎麼改成都用JSON溝通? : 不知道有沒有大大有經驗,可以指點小弟一下。 後端的json處理我是使用google的gson套件 不知道你有沒有使用Maven <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency> 之後你只要在你的Data Bean加入以下method public String toJson(){ return new GsonBuilder().disableHtmlEscaping().create().toJson(this); } 就可以取得json格式的字串 到前端再使用jQuery parsing var json = $.parseJSON(jsonMessage); var status = json.status; var message = json.message; 當然有更簡單的方式 例如將dataType直接指定為json 其實JSON就是個格式化的字串 這樣想之後會簡單一點 就是字串傳來傳去嘛 哈哈哈 有物件解釋就夠了 以下是題外話 其實我不太推薦在view裡用太多的taglib或是什麼其他一大堆功能 基本上我的view裡面是迴圈居多 if else的判斷式盡量在後端就處理完 拿最簡單select element輸出做範例 大概會長這樣 <loop> <select> <option value=${value} ${selected}>$display</option> </select> </loop> 除了loop(偷懶一下)之外 其他都是設計師可以看懂的 或是不需要看懂也沒關係的 非必要的東西不寫在view裡 所以我套版完成後跟一開始設計師給的HTML原始碼差異都不大 若要改版面需要重新溝通、重新套版都很方便 用很多程式相關的標籤在view裡 反而失去MVC的本意了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.166.88
kiwatami:loop寫錯地方XD 懶得改了 那邊不是重點 02/15 22:19
ek0424:感謝大大您的解說!感覺您的程式碼一定很精簡~學習了。 02/16 12:58
ek0424:若有程式碼完整範例就更好了!XD 02/16 13:12
kiwatami:沒那麼閒啦XD 02/16 23:44