[英]Play framework URL validator?
URL來自Play Framework 2中的表單。我想檢查URL是否確實存在。
因此,似乎可以通過組合兩個接近來完成。
在模型中是否有使用注釋的內置類似功能?
如何在Play Framework 2.0中創建自定義驗證器?
編輯:對於賞金,您可以提供URL驗證器(不是內置)的實現。
基本上,您需要對目標URL執行HTTP HEAD
請求,並檢查是否有可接受的響應代碼 。 可接受的響應代碼可能是OK(200),暫時移動(???)以及其他將導致頁面的代碼,如果不是現在,至少很快。
為什么HEAD
? 因為GET
將下載整個頁面, HEAD
將僅下載HTTP標頭。 在這種情況下,這將花費更少的時間和時間不是朋友。 驗證應該很快完成,並且發出HTTP請求需要時間。 在這幾秒鍾(或更長時間內,取決於服務器和網絡負載),用戶會想知道發生了什么並感到沮喪。 除非您能夠顯示其中一個動畫進度指示器,讓他知道驗證其輸入需要一些時間。
您應該像密碼強度驗證器那樣執行此操作,其中一旦焦點離開輸入控件並且在顯示結果的一側有一個動畫指示符,則在后台AJAX調用中驗證該值。 在此期間,用戶可以填寫其他信息。
代碼會是這樣的:
public class UrlExistenceValidator ... {
public boolean isValid(Object object) {
if (!(object instanceof String)) {
return false;
}
final String urlString = (String) object;
final URL url = new URL(urlString);
final HttpURLConnection huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("HEAD");
huc.connect();
final int code = huc.getResponseCode();
return code != 404;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.