我正在从java生成wsdl。我在java字段中给出了nillable = false,但该字段接受来自Web服务请求的空值。我的豆是
import java.util.Date;
import java.util.Formatter;
import java.util.Locale;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.springframework.format.annotation.DateTimeFormat;
@XmlRootElement(name = "LocationData")
@XmlAccessorType(XmlAccessType.FIELD)
public class LocationData {
private String id;
@DateTimeFormat(pattern="yyyy-mm-dd")
private Date date;
@NotNull
@XmlElement(required=true,nillable=false)
private String timezone;
@XmlElement(required=true,nillable=false)
private String location;
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public String getTimezone() {
return timezone;
}
public void setLocation(String location) {
this.location = location;
}
public String getLocation() {
return location;
}
public void setDate(Date date) {
this.date = date;
}
public Date getDate() {
return date;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb, Locale.US);
formatter.format("ID:%s\nLocation:%s\nDate:%s\nTime zone:%s\n", getId(), getLocation(), getDate(), getTimezone());
return sb.toString();
}
}
我的界面
@WebMethod
public LocationData createLocation( LocationData locationData) throws DuplicateLocationException;
请告诉我,可能是什么问题?我错过了什么吗?任何帮助将不胜感激。
答案 0 :(得分:0)
可能另一种方法是验证是使用带有最小值的SimpleType
并使用模式验证。
启用架构验证。
@WebMethod
@SchemaValidation(type=SchemaValidationType.BOTH, schemas="mywsdl.wsdl")
public LocationData createLocation( LocationData locationData) throws DuplicateLocationException;
修改您的wsdl文件以限制timezone
<xs:element name="timezone">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>