Java/XML请求问题
第一次在这里张贴海报。我面临的问题是Java和XML。我面临的问题是,用户将向我们的系统发送VerifyAccount XML请求,根据发送的信息,我们的系统将验证帐户、发送未注册用户错误或无效帐户错误。 我对代码做了一些工作,在XML模式中添加了一个元素,只有在请求中新创建的元素在XML中被解析时,它才起作用。问题是我不想在XML请求中传递该元素,但如果排除该元素,代码将无法正常工作 Java函数是:Java/XML请求问题,java,xml,resultset,Java,Xml,Resultset,第一次在这里张贴海报。我面临的问题是Java和XML。我面临的问题是,用户将向我们的系统发送VerifyAccount XML请求,根据发送的信息,我们的系统将验证帐户、发送未注册用户错误或无效帐户错误。 我对代码做了一些工作,在XML模式中添加了一个元素,只有在请求中新创建的元素在XML中被解析时,它才起作用。问题是我不想在XML请求中传递该元素,但如果排除该元素,代码将无法正常工作 Java函数是: private String checkPersonID(String[] logi
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
XML中新添加的元素是detailedErrorMessage
XML请求应该是:
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="--" Version="1.0">
<Identification>
<UserID>your.address@your.company</UserID>
<Password>password</Password>
</Identification>
<Service>
<ServiceName>AccountVerify</ServiceName>
<ServiceDetail/>
</Service>
</Request>
你的。address@your.company
密码
帐户验证
即请求,如果在该请求中添加了detailedErrorMessage元素,则该函数将按预期工作。我在这个代码中做错了什么?我已经想了好几天了,这让我头痛不已
任何帮助都将不胜感激!
谢谢如果我理解正确,我认为您只需要在模式中将元素标记为可选。将minOccurs设置为0,maxOccurs设置为1以创建可选元素
编辑:在重读之后,如果没有详细的ErrorMessage,if块将抛出NullPointerException。当你把一堆方法调用连在一起,其中任何一个都可以为null时,你就是在玩火。检查值之前,请验证每个子级是否存在。当前minOccurs设置为0,而maxOccurs未设置。我认为它应该设置为1作为默认值?