在Web服务上使用Spring Validator

Rob*_*Rob 5 java validation spring spring-mvc

是否可以使用Spring Validators来验证来自Web Services Soap请求的数据?或者更多,那么我应该如何改变以下方法以使其成为可能?

我的确切背景如下:

我有一个使用Freemarker和Controllers的Web前端,可以正常使用验证,例如使用

<bean id="stockValidator" class="com.client.validator.StockValidator" />
Run Code Online (Sandbox Code Playgroud)

在dispatcher-servlet.xml中

然后在StockController中,对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";
        }
   }
Run Code Online (Sandbox Code Playgroud)

但是,我的SOAP Web服务是基于Annotation连接到服务中的

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;
Run Code Online (Sandbox Code Playgroud)

这在调度程序servlet中映射如下:

    <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>
Run Code Online (Sandbox Code Playgroud)

对不起,我是一个业余爱好开发人员,并认为在某些方面,我对如何最好地处理此设置感到困惑.如果从头开始重新开始让我知道更合适.

干杯,罗布

Juk*_*kka 5

您可能需要查看Spring Web Services(http://projects.spring.io/spring-ws/).有了它,您可以使用PayloadValidatingInterceptor对传入的SOAP消息运行基于XSD的验证.