2013-04-04 28 views
0

我已經在Spring MVC項目中獲得了表單對象的Spring Validator,我需要做一些基於客戶端IP地址的驗證。是否有可能在驗證器內部獲得像request.getRemoteAddr()這樣的東西?基於客戶端IP的彈性驗證

//controler 

public String saveForm(@Valid @ModelAttribute("command") MyCommand myCommand, BindingResult result) { 
//some code 
return "viewName"; 
} 

//Validator 
public class MyValidator implements Validator { 
    @Override 
    public void validate(Object target, Errors errors) { 
    String requestIp = ? 
} 
} 

回答

1

它在我腦海中第一種方式是使用RequestContextHolder得到用戶的請求:

((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest().getRemoteAddr() 

您還需要以下行添加到web.xml

<listener>                      
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 
+0

非常感謝你,我應該知道在使用LocaleContexttHolder時會有一些請求的上下文持有者:-) – 2013-04-04 10:51:02