2013-09-04 16 views
5

È possibile utilizzare Spring Validators per convalidare i dati dalle richieste di servizi Web? O ancora di più, cosa dovrei cambiare con l'approccio seguente per renderlo possibile?Utilizzo di Spring Validator sui servizi Web

Il contesto preciso che ho è di seguito:

Ho un front-end web utilizzando Freemarker e controller che funziona bene con la convalida ad esempio utilizzando

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

Nel dispatcher-servlet.xml

Quindi in StockController la convalida avviene sulle richieste Post.

@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"; 
     } 
    } 

Tuttavia i miei servizi web SOAP si basano Annotazione cablata nei servizi

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; 

Questo è mappato nel servlet dispatcher in quanto tale:

<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> 

dispiace Sono uno sviluppatore di hobby penso che da qualche parte lungo la strada sono un po 'confuso nel modo migliore per avvicinarmi a questo setup. Se è più appropriato ricominciare da capo fammi sapere.

Cheers, Rob

risposta

2

Sto solo aggiungendo un esempio di come usare il PayloadValidatingInterceptor suggerito da @ Jukka.

È possibile PayloadValidatingInterceptor per intercettare le richieste e convalidarle con lo schema XSD. Per esempio. (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> 
Problemi correlati