【问题标题】:Using Spring Validator on Web services在 Web 服务上使用 Spring Validator
【发布时间】:2013-09-08 09:33:39
【问题描述】:

是否可以使用 Spring Validators 来验证来自 Web Services Soap 请求的数据?或者更重要的是,我应该对以下方法进行哪些更改才能使其成为可能?

我所拥有的确切上下文如下:

我有一个使用 Freemarker 和控制器的 Web 前端,可以很好地进行验证,例如使用

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

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

但是,我的 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;

这在调度程序 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>

抱歉,我是一名业余爱好者,我认为在此过程中,我对如何最好地处理此设置感到有些困惑。如果从头开始更合适,请告诉我。

干杯, 抢

【问题讨论】:

    标签: java spring validation spring-mvc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我只是添加了如何使用@Jukka 建议的 PayloadValidatingInterceptor 的示例。

      您可以使用 PayloadValidatingInterceptor 拦截请求并使用 XSD 架构对其进行验证。例如。 (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>
      

      【讨论】:

        猜你喜欢
        • 2016-11-11
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-01-16
        • 1970-01-01
        相关资源
        最近更新 更多