不确定为什么返回数组为空

时间:2018-12-28 10:48:59

标签: java json ldap

我在将数组返回为空时遇到问题,并且不确定问题出在哪里。

使用angularjs在单击提供的带有人名的链接时,将被单击的名字作为参数发送到名为APPservlet.java的java类,然后在其中运行此代码。

case "personName": {
        try {
            ldapAuthenticationServiceAccess.getADPersonInfo(session.getAttribute("personName").toString());
        } catch (NullPointerException e) {
            e.printStackTrace();
            log.error(e);
        }
        jsonObject = new JSONObject();
        jsonArray = new JSONArray();
        tmpJSONObject = new JSONObject();
        try {
            PersonADInfo info = new PersonADInfo();

            tmpJSONObject = new JSONObject();
            tmpJSONObject.put("name", info.getName());
            tmpJSONObject.put("email", info.getEmail());
            tmpJSONObject.put("sector", info.getSector());
            tmpJSONObject.put("workplace", info.getWorkplace());
            jsonArray.put(tmpJSONObject);

            jsonObject.put("person", jsonArray);
        } catch (JSONException e) {
            e.printStackTrace();
            e.getMessage();
            log.error(e);
        }

        writer.println(jsonObject.toString());

    }
        break;

当调用该Java类时,将在其中调用方法getADPersonInfo(String),该方法位于Java类LDAPAuthenticationServiceAccess.java内,其目的是连接到LDAP,然后连接到AD,以获取用户的信息。然后,该信息将传递到名为PersonADInfo.java的类,其中包含getter和setter。这是代码。

    public void getADPersonInfo(String username) {      

    String returnedAttributePerson[] = {"distinguishedName", "givenName" , "sAMAccountName" };

    String searchFilterPerson = "(&(objectClass=user)(displayName=" + username + "))";
    String searchBasePerson = "DC=Something,DC=local";

    SearchControls searchCtlsPerson = new SearchControls();
    searchCtlsPerson.setSearchScope(SearchControls.SUBTREE_SCOPE);
    searchCtlsPerson.setReturningAttributes(returnedAttributePerson);
    LdapContext ctxGCPERSON = null;
    try {
    ctxGCPERSON = new InitialLdapContext(env, null);
    NamingEnumeration<?> answerPERSON = ctxGCPERSON.search(searchBasePerson, searchFilterPerson,
            searchCtlsPerson);

    while (answerPERSON.hasMoreElements()) {
        SearchResult srPERSON = (SearchResult) answerPERSON.next();
        Attributes attrsPERSON = srPERSON.getAttributes();
        PersonADInfo personADInfo = new PersonADInfo();
        personADInfo.setName(username);
        personADInfo.setEmail(attrsPERSON.get("distinguishedName").get().toString());
        personADInfo.setSector(attrsPERSON.get("givenName").get().toString());
        personADInfo.setWorkplace(attrsPERSON.get("sAMAccountName").get().toString());

    }
} catch (NamingException e) {
    log.error(e);
    e.printStackTrace();
}

}

正在设置的变量仅用于测试目的,并且仅用于查看是否返回任何内容。目前,唯一返回的是一个空数组,我不确定问题出在哪里,这种项目对我来说是第一个,所以请您谅解,我们将不胜感激。预先感谢!

注意:该项目使用SSO,因此每次测试时,我都需要将war文件上传到远程tomcat服务器。

0 个答案:

没有答案