在 JSP 中迭代用户名和用户组
Iterate username and usergroup in JSP
我正在尝试编写一个 jsp 代码,它将从应用程序中获取所有用户名及其组。该代码将使用 admin userid 和 pwd 登录到应用程序,并将所有用户名和组带到应用程序中。但我的代码只返回管理员 ID 和组。我如何迭代它以便它带回所有用户 ID 和组?在代码下方,感谢您的帮助。
ISessionMgr sm = CrystalEnterprise.getSessionMgr();
ies = sm.logon(UserName, password, cms, auth);
IInfoStore iStore = (IInfoStore)ies.getService("","InfoStore");
String Query = "SELECT top 10 * FROM CI_SYSTEMOBJECTS WHERE SI_KIND = 'User'AND SI_NAME = '" + UserName + "'";
IInfoObjects iObjects = iStore.query(Query);
for(int i=0;i<iObjects.size();i++)
{
if (iObjects.size()> 0)
{
iObject = (IInfoObject) iObjects.get(i);
user = (IUser)iObject;
java.util.Set usergroups = (java.util.Set)user.getGroups();
Iterator iter = usergroups.iterator();
out.println("<tr bgcolor = lightblue><td>" + user.getTitle() + "</tr></td>");
String groupName = null;
while (iter.hasNext())
{
id = String.valueOf(iter.next());
String Query1 = "SELECT top 10 * FROM CI_SYSTEMOBJECTS WHERE SI_KIND = 'UserGroup' AND SI_ID = '" + id + "'";
IInfoObjects iObjects1 = iStore.query(Query1);
for(int j=0;j<iObjects1.size();j++)
{
iObject1 = (IInfoObject) iObjects1.get(j);
groupName = iObject1.getTitle();
out.println("<td>" + groupName + "<br></tr></td>");
我不知道您的应用程序业务逻辑,但我会试一试。
看起来您正在将 SQL 查询缩小到仅 return 用户名是登录用户名的用户。
第 2 行您使用对象 UserName 登录(顺便说一下,如果您能解释变量 UserName
的来源,这将很有用)并且在第 4 行您在 SQL 从所有用户那里查询。
所以我的猜测是,如果您从第一个 SQL 中删除 AND SI_NAME = '" + UserName + "'"
部分,它就会像您希望的那样工作。
我正在尝试编写一个 jsp 代码,它将从应用程序中获取所有用户名及其组。该代码将使用 admin userid 和 pwd 登录到应用程序,并将所有用户名和组带到应用程序中。但我的代码只返回管理员 ID 和组。我如何迭代它以便它带回所有用户 ID 和组?在代码下方,感谢您的帮助。
ISessionMgr sm = CrystalEnterprise.getSessionMgr();
ies = sm.logon(UserName, password, cms, auth);
IInfoStore iStore = (IInfoStore)ies.getService("","InfoStore");
String Query = "SELECT top 10 * FROM CI_SYSTEMOBJECTS WHERE SI_KIND = 'User'AND SI_NAME = '" + UserName + "'";
IInfoObjects iObjects = iStore.query(Query);
for(int i=0;i<iObjects.size();i++)
{
if (iObjects.size()> 0)
{
iObject = (IInfoObject) iObjects.get(i);
user = (IUser)iObject;
java.util.Set usergroups = (java.util.Set)user.getGroups();
Iterator iter = usergroups.iterator();
out.println("<tr bgcolor = lightblue><td>" + user.getTitle() + "</tr></td>");
String groupName = null;
while (iter.hasNext())
{
id = String.valueOf(iter.next());
String Query1 = "SELECT top 10 * FROM CI_SYSTEMOBJECTS WHERE SI_KIND = 'UserGroup' AND SI_ID = '" + id + "'";
IInfoObjects iObjects1 = iStore.query(Query1);
for(int j=0;j<iObjects1.size();j++)
{
iObject1 = (IInfoObject) iObjects1.get(j);
groupName = iObject1.getTitle();
out.println("<td>" + groupName + "<br></tr></td>");
我不知道您的应用程序业务逻辑,但我会试一试。 看起来您正在将 SQL 查询缩小到仅 return 用户名是登录用户名的用户。
第 2 行您使用对象 UserName 登录(顺便说一下,如果您能解释变量 UserName
的来源,这将很有用)并且在第 4 行您在 SQL 从所有用户那里查询。
所以我的猜测是,如果您从第一个 SQL 中删除 AND SI_NAME = '" + UserName + "'"
部分,它就会像您希望的那样工作。