2013-09-04 6 views
5

Ist es möglich, Spring Validators zu verwenden, um Daten von Web Services Soap-Anforderungen zu validieren? Oder mehr, was sollte ich über den folgenden Ansatz ändern, um es zu ermöglichen?Verwenden von Spring Validator für Webdienste

Der genaue Zusammenhang, dass ich unten:

Ich habe einen Web-Frontend und Freemarker-Controller verwenden, die bei der Validierung zum Beispiel unter Verwendung von

<bean id="stockValidator" class="com.client.validator.StockValidator" /> 

Im Dispatcher-servlet.xml gut funktioniert

Anschließend erfolgt die Validierung im StockController bei Post-Requests.

@RequestMapping(value = "/addStock", method = RequestMethod.POST) 
    public String addStudent(@ModelAttribute Stock stock,BindingResult result, 
    ModelMap model) { 

     StockValidator.validate(stock, result); 
     if (result.hasErrors()) { 
      //model.addAttribute("stock", stock); 
      return "stock"; 
     } else { 
      StockService.save(stock); 
      model.addAttribute("stockId", stock.getStockId()); 
      model.addAttribute("stockCode", stock.getStockCode()); 
      model.addAttribute("stockName", stock.getStockName()); 

      return "result"; 
     } 
    } 

jedoch meine SOAP Web Services sind Annotation basiert verdrahtet in die Dienste

import javax.jws.WebService; 

import org.springframework.beans.factory.annotation.Autowired; 

import com.olympus.viewtheworld.server.dao.StockDao; 
import com.olympus.viewtheworld.server.service.StockService; 
import com.olympus.viewtheworld.shared.domain.Stock; 

@WebService(endpointInterface = "com.server.service.StockService") 
public class StockServiceImpl implements StockService{ 

@Autowired 
StockDao stockDao; 

Diese im Dispatcher Servlet als solche abgebildet ist:

<jaxws:endpoint id="stockService" 
     implementorClass="com.server.service.Impl.StockServiceImpl" 
     implementor="#stockServiceImpl" 
     address="/SoapService/stock"> 
    <jaxws:serviceFactory> 
     <ref bean="jaxws-and-aegis-service-factory"/> 
    </jaxws:serviceFactory> 
</jaxws:endpoint> 

Sorry, ich ein Hobby-Entwickler bin und Ich denke, irgendwo auf dem Weg habe ich ein bisschen verwirrt, wie man sich am besten an dieses Setup annähert. Wenn es besser ist, von vorne anzufangen, lassen Sie es mich wissen.

Cheers, Rob

Antwort

2

Ich füge nur ein Beispiel für die Verwendung von @ Jukkas vorgeschlagenem PayloadValidatingInterceptor hinzu.

Sie können PayloadValidatingInterceptor Anfragen abfangen und mit dem XSD-Schema validieren. Z.B. (applicationContext.xml):

<sws:interceptors> 
     <!-- Add our validating interceptor --> 
     <ref bean="validatingInterceptor" /> 
    </sws:interceptors> 
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> 
     <property name="schema" value="classpath:org/example/myproject/xsd/myprojectws.xsd"/> 
     <property name="validateRequest" value="true"/> 
     <property name="validateResponse" value="true"/> 
    </bean> 
Verwandte Themen