[英]Using Spring Validator on Web services
是否可以使用Spring Validators来验证来自Web Services Soap请求的数据? 或者更多,那么我应该如何改变以下方法以使其成为可能?
我的确切背景如下:
我有一个使用Freemarker和Controllers的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服务是基于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;
这在调度程序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>
对不起,我是一个业余爱好开发人员,并认为在某些方面,我对如何最好地处理此设置感到困惑。 如果从头开始重新开始让我知道更合适。
干杯,罗布
您可能需要查看Spring Web Services( http://projects.spring.io/spring-ws/ )。 有了它,您可以使用PayloadValidatingInterceptor对传入的SOAP消息运行基于XSD的验证。
我只是添加了如何使用@ 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.