2013-09-04 15 views
5

Spring Validatorを使用してWebサービスSoap要求からデータを検証できますか?それでは、それを可能にするために、以下のアプローチについて私は何を変えるべきですか?WebサービスでSpring Validatorを使用する

私が正確なコンテキストは、以下である:

Iディスパッチャ-servlet.xmlで

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

を使用して、実施例の検証で正常に動作Freemarkerのとコントローラを使用してWebフロントエンドを有する

StockControllerでは、ポストリクエストに対して検証が行われます。

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

私のSOAP Webサービスは、注釈

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; 

これは以下のようなディスパッチャサーブレットにマッピングされているサービスに有線基づ​​くものですが:私は趣味の開発者を午前申し訳

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

どのようにこの設定に近づけるのがちょっと混乱しているのかと思います。最初からやり直すことがより適切であれば教えてください。

乾杯、 ロブ

答えて

2

@ Jukkaが提案するPayloadValidatingInterceptorの使い方の例を追加しています。

リクエストを代行受信し、XSDスキーマで検証するためにPayloadValidatingInterceptorを使用できます。例えば。 (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> 
関連する問題