我在将数组返回为空时遇到问题,并且不确定问题出在哪里。
使用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服务器。