原来的wsdl

<xs:complexType name="SyncPartTraceProcess">
<xs:sequence>
<xs:element minOccurs="0" name="OrderMasterData" type="tns:partTraceWrap"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="partTraceWrap">
<xs:complexContent>
<xs:extension base="tns:baseWrap">
<xs:sequence>
<xs:element minOccurs="0" name="data" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="baseWrap">
<xs:sequence>
<xs:element minOccurs="0" name="key" type="xs:string"/>
</xs:sequence>
</xs:complexType>

修改要求

下面是调用方给的截图,参数是0…1,表示可空,业务方要求使用1…1

分析

从wsdl看来,关键是minOccurs="0"表示0…1,只要把它去掉,或者修改成 `minOccurs="1"即可, 那怎么去修改呢?

1:首先根结点

<xs:element minOccurs="0" name="OrderMasterData" type="tns:partTraceWrap"/>

OrderMasterData这个是根参数里面的。
2:其次是根结点下的元素。

<xs:element minOccurs="0" name="data" type="xs:string"/>

调整

1:根结代码调整。

import com.ly.mp.swcas.main.wrap.*;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import java.text.ParseException;@WebService(name = "SwcasService")
public interface SwcasService {@WebMethod@WebResult(name = "WsResult", targetNamespace = "")WsResult SyncPartTraceProcess(@WebParam(name = "OrderMasterData") @XmlElement(required = true) PartTraceWrap data) throws ParseException;}

PS:在方法的参数上添加@XmlElement(required = true),表示这个参数是必填的。

2:叶结代码调整。叶结点实际上是上面PartTraceWrap 参数实体的一个属性。调整如下

package com.ly.mp.swcas.main.wrap;import javax.xml.bind.annotation.*;
import java.io.Serializable;@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class PartTraceWrap extends BaseWrap implements Serializable {private static final long serialVersionUID = -6763186241763563647L;@XmlElement(required = true)private  String data="";public String getData() {return data;}public void setData(String data) {this.data = data;}
}

PS:在data字段添加上@XmlElement(required = true)注解,在类PartTraceWrap上添加 @XmlRootElement注解。
  注意,两个注释都必在有,只添加字段注释,项目是启动不了的

3:修改完成,看一下重新生成的wsdl效果,已然生效。

<xs:complexType name="SyncPartTraceProcess">
<xs:sequence>
<xs:element name="OrderMasterData" type="tns:partTraceWrap"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="partTraceWrap">
<xs:complexContent>
<xs:extension base="tns:baseWrap">
<xs:sequence>
<xs:element name="data" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="baseWrap">
<xs:sequence>
<xs:element minOccurs="0" name="key" type="xs:string"/>
</xs:sequence>
</xs:complexType>

总结

关键是 @XmlElement(required = true) 注解,把原代码关键部分抽出来。如下


@Retention(RUNTIME) @Target({FIELD, METHOD, PARAMETER})
public @interface XmlElement {String name() default "##default";boolean nillable() default false;/*** Customize the element declaration to be required.* <p>If required() is true, then Javabean property is mapped to* an XML schema element declaration with minOccurs="1".* maxOccurs is "1" for a single valued property and "unbounded"* for a multivalued property.* <p>If required() is false, then the Javabean property is mapped* to XML Schema element declaration with minOccurs="0".* maxOccurs is "1" for a single valued property and "unbounded"* for a multivalued property.*/boolean required() default false;String namespace() default "##default";String defaultValue() default "\u0000";Class type() default DEFAULT.class;static final class DEFAULT {}
}

1:从代码的注释可以看到,required 值对应 minOccurs值为: false : 0 ;true : 1。
2:本注解 使用了 @Retention(RUNTIME) @Target({FIELD, METHOD, PARAMETER}) 注解,表示可以用于字段,方法,参数。

java wsdl 参数必填设置相关推荐

  1. japidocs怎么设置参数必填_JApiDocs 动态生成接口文档,并解析java 源码中的注释...

    1.介绍 JApiDocs 是一个符合 Java 编程习惯的 Api 文档生成工具.最大程度地利用 Java 的语法特性,你只管用心设计好接口,添加必要的注释,JApiDocs 会帮你导出一份漂亮的 ...

  2. japidocs怎么设置参数必填_常用的3种拍摄模式,相机参数怎么设置?如何正确曝光?...

    初入摄影不知道什么是曝光三要素,不知道参数到底该怎么调.今天我们就来学习一下怎么才能得到一张曝光正确的照片. 我们先来学习一下曝光三要素.为什么要学习曝光三要素?因为控制曝光的参数主要有光圈.快门.感 ...

  3. 功能更新 | 任务类型排序、任务描述必填、窄详情支持新建关联任务

    1 任务类型支持排序 排序后,项目内任务列表的任务类型位置将随着调整. 如何设置:进入项目设置>任务类型,即可拖拽排序. 2 窄详情支持新建关联任务 3 任务描述支持必填设置 设置必填后,未填写 ...

  4. java 字段验证_Selenium-Gherkin-Java:验证必填字段上的文本

    简短版:我有一个必填字段,显示"此字段是必需的"的元素可以包含多个消息.我正在努力设置我的BDD功能步骤.页面和步骤文件,以验证是否显示了正确的消息. 长版: 对Java/Sele ...

  5. SAP SD 销售凭证如何设置字段必填

    在实际业务中,我们经常遇到需要设置某些字段是必输的.那么在SAP中创建销售订单时如何控制必填字段呢?请看操作手册 第一步:设置屏幕增强 T-CODE:shd0 上截图 1----输入需要控制的事物代码 ...

  6. java定义dll文件位置,生成网站时如何设置固定的dll文件名?-Java架构师必看

    在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文网络 在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定 ...

  7. java 启动参数 配置,java程序启动参数设置

    有些时候我们需要在java程序启动时设置一些系统属性值,然后程序启动后可以获取这些系统属性值并进行一些逻辑处理.例如我们在使用Maven打包的时候如果想跳过test执行,可以使用如下命令: mvn c ...

  8. 如何设置dedecms自定义表单必填项?

    用dedecms自定义表单可以制作一个简单的预约系统,有些相关信息需要设置为必填项,比如联系方式,没有留下真实的电话或其他信息,以后要怎么联系到你的客户.那我们要如何设置织梦cms自定义表单必填项呢? ...

  9. js文本框设置必填项_Jquery文本框小例(必填框)

    //当光标离开文本框的时候如果文本框为空,则将文本框边框色设置为红色,如果不为空则为白色.提示:焦点进入控件的事件是focus或者mousedown,焦点离开控件的事件是blur. $(functio ...

最新文章

  1. 【转】关于Apache与Nginx的优势比较
  2. mysql 事务处理
  3. 超图预览osgb格式倾斜摄影文件
  4. Qt 2D绘图功能简单总结
  5. while循环练习:
  6. dsp 数据类型强制转换_JavaSE第二章总结—数据类型
  7. Java并发编程中volatile实现过程详细解析
  8. 详解html结构之间的各个关系,层级关系(以列表为例)
  9. 微信分享接口调用(自测通过可以用)
  10. Qt中的QString和QByteArray之间转换
  11. ChemDraw 15支持哪些输入格式
  12. h5微信f分享链接给对方获取对方手机号_怎么加回微信删除的人?偷偷恢复,亲测有效!...
  13. 蓝牙路由器系列产品:企业级Cassia E1000
  14. python拉格朗日插值法_Python 实现拉格朗日插值
  15. centos7安装有道词典
  16. ios java模拟器 2017_Visual Studio 2017(Xamarin)未显示iPhone模拟器列表
  17. 开仓平仓基本类型有哪些?股指开仓平仓指的是什么?
  18. mysql之从入门到删库跑路
  19. Java实现系统统一对外开放网关入口设计
  20. matlab由方波转换为梯形波,matlab怎样将方波转换为二进制数据

热门文章

  1. 【多线程】初识多线程
  2. 发表SCI或EI类英文文章的投稿经验
  3. STM32 IO口模拟ISO7816(PSAM卡)协议
  4. Redis五种数据类型及命令(一)
  5. Activity启动另一个Activity并返回的完整生命周期
  6. oracle连接工具 DBz,[Oracle] - 性能优化工具(3) - ADDM
  7. STM32学习笔记(11)电容触摸按键
  8. 【nowcoder 224882】牛牛和数组操作(贪心)(剪枝)(区间DP)
  9. my.资料__2017暑假
  10. Kafka ui 搭建以及使用