2011-06-13 3 views
1

처음으로 여기에 포스터. 내가 직면하고있는 문제는 자바와 XML이다. 내가 직면 한 문제는 사용자가 VerifyAccount XML 요청을 시스템에 보내고 전송 된 정보에 따라 Google 시스템에서 계정을 확인하거나 등록되지 않은 사용자 오류 또는 잘못된 계정 오류를 보내는 것입니다. 코드에서 일부 작업을했는데 XML 스키마에 요소를 추가했습니다. 요청에서 새로 만든 요소가 xml로 파싱 된 경우에만 작동했습니다. 문제는 XML 요청에서 해당 요소를 전달하고 싶지 않지만 요소를 제외하면 코드가 제대로 작동하지 않는다는 것입니다.Java/XML 요청 문제

자바 기능은 다음과 같습니다 XML에

private String checkPersonID(String[] loginDetails, String serviceName, Connection conn, Element service) throws SQLException, JspException 
    { 
     assert loginDetails != null : "You need to set loginDetails before calling checkPersonID()"; 
     assert serviceName != null : "You need to set serviceName before calling checkPersonID()"; 

     CallableStatement stmt = conn.prepareCall("{call jspCheckPersonID (?)}") 

     try 
     { 
      stmt.setString(1, loginDetails[INDEX_USERNAME]); 
      ResultSet rs = stmt.executeQuery(); 

      // Make sure this person is a valid user - if so return his personID, otherwise throw appropriate Exception 
      if (serviceName.equals ("AccountVerify") && service.getChild("ServiceDetail").getChild("detailedErrorMesage").getText().equals ("true") && !rs.next()) 
      { 
       throw new JspException(JspException.UNREGISTERED_ACCOUNT); 
      }   
      else if (rs.getRow() != 1 || !rs.getString("Password").trim().equalsIgnoreCase(loginDetails[INDEX_PASSWORD])) 
      { 
       throw new JspException(JspException.INVALID_ACCOUNT); 
      } 

// code ommitted 

새로 추가 된 요소는 detailedErrorMessage입니다.

XML 요청은 다음과 같아야

detailedErrorMesage 요소가 의도 한대로 기능의 작동이 요청에 추가되는 경우 요청이다
<?xml version="1.0" encoding="UTF-8"?> 
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="--" Version="1.0"> 
    <Identification> 
     <UserID>[email protected]</UserID> 
     <Password>password</Password> 
    </Identification> 
    <Service> 
     <ServiceName>AccountVerify</ServiceName> 

     <ServiceDetail/> 
    </Service> 
</Request> 

. 이 코드에서 내가 뭘 잘못하고 있니? 며칠 동안 그것에 대해 생각해 봤는데 머리를 쓰고 있어요!

도움이 될 것입니다! 감사합니다.

답변

0

정확하게 이해하고 있다면 스키마에서 선택 요소로 표시해야한다고 생각합니다. 선택적 요소를 만들려면 minOccurs를 0으로 설정하고 maxOccurs를 1로 설정합니다.

편집 : 다시 읽은 후 detailedErrorMessage가 없으면 if 블록에서 NullPointerException이 발생합니다. 그들 중 하나가 null이 될 수있는 것과 같은 메소드 호출을 함께 묶어서, 당신은 불을 가지고 놀고 있습니다. 값을 확인하기 전에 각 자식이 존재하는지 확인하십시오.

+0

현재 minOccurs는 0으로 설정되어 있으며 maxOccurs는 설정되어 있지 않습니다. 기본적으로 1로 설정해야한다고 생각합니까? – Sad