2017-02-28 10 views
0

java에서 wsdl을 생성 중입니다. 자바 필드에서 nillable = false를 지정했지만 필드는 웹 서비스 요청에서 빈 값을 허용합니다. 내 빈은아파치에서 Nillable = false가 작동하지 않습니다. cxf

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

또 다른 방법은 최소값으로 SimpleType을 사용하고 스키마 유효성 검사를 사용하는지 확인하는 것입니다.

  1. 스키마 유효성 검사 사용.

    @WebMethod 
    @SchemaValidation(type=SchemaValidationType.BOTH, schemas="mywsdl.wsdl") 
    public LocationData createLocation(LocationData locationData) throws DuplicateLocationException; 
    
  2. <xs:element name="timezone"> 
        <xs:simpleType> 
        <xs:restriction base="xs:string"> 
         <xs:minLength value="1" /> 
        </xs:restriction> 
        </xs:simpleType> 
    </xs:element> 
    
+0

timezone 유사 나는 50 개 문자열 요소에 대한 50 가지 정규식 패턴 체크를하고있을 것입니다에 제한이 당신의 WSDL 파일을 수정합니다. 이 경우, 위의 방법을 사용하면 50 개의 제한 기반을 만들어야합니다. 거기에 어떤 방식으로 각 요소에 대한 정규식 패턴을 선언 할 수 있습니까? – user6543599