java.lang.Object javax.naming.ldap.BasicControl javax.naming.ldap.SortControl
public final class SortControl
请求 LDAP 服务器在返回搜索操作的结果前对这些结果进行排序。使用一个或多个排序键所组成的有序列表与关联的排序参数一起指定排序标准。搜索结果根据排序控件中提供的参数在 LDAP 服务器排序,然后返回给请求方。如果服务器上不支持排序(而排序控件被标记为关键),则不执行搜索操作并返回错误。
以下代码示例展示了使用该类的方式:
// Open an LDAP association LdapContext ctx = new InitialLdapContext(); // Activate sorting String sortKey = "cn"; ctx.setRequestControls(new Control[]{ new SortControl(sortKey, Control.CRITICAL) }); // Perform a search NamingEnumeration results = ctx.search("", "(objectclass=*)", new SearchControls()); // Iterate over search results while (results != null && results.hasMore()) { // Display an entry SearchResult entry = (SearchResult)results.next(); System.out.println(entry.getName()); System.out.println(entry.getAttributes()); // Handle the entry's response controls (if any) if (entry instanceof HasControls) { // ((HasControls)entry).getControls(); } } // Examine the sort control response Control[] controls = ctx.getResponseControls(); if (controls != null) { for (int i = 0; i < controls.length; i++) { if (controls[i] instanceof SortResponseControl) { SortResponseControl src = (SortResponseControl)controls[i]; if (! src.isSorted()) { throw src.getException(); } } else { // Handle other response controls (if any) } } } // Close the LDAP association ctx.close(); ...
此类实现在 RFC 2891 中定义的用于服务器端排序的 LDAPv3 请求控件。 控件值具有以下 ASN.1 定义:
SortKeyList ::= SEQUENCE OF SEQUENCE { attributeType AttributeDescription, orderingRule [0] MatchingRuleId OPTIONAL, reverseOrder [1] BOOLEAN DEFAULT FALSE }
SortKey
,
SortResponseControl
,
序列化表格
字段摘要 | |
---|---|
static String |
OID 服务器端排序控件的分配对象标识符为 1.2.840.113556.1.4.473。 |
从类 javax.naming.ldap.BasicControl 继承的字段 |
---|
criticality, id, value |
从接口 javax.naming.ldap.Control 继承的字段 |
---|
CRITICAL, NONCRITICAL |
构造方法摘要 | |
---|---|
SortControl(SortKey[] sortBy, boolean criticality) 构造一个控件来对排序键列表进行排序。 |
|
SortControl(String[] sortBy, boolean criticality) 构造一个控件来按升序对属性列表进行排序。 |
|
SortControl(String sortBy, boolean criticality) 构造一个控件来按升序对单个属性进行排序。 |
方法摘要 |
---|
从类 javax.naming.ldap.BasicControl 继承的方法 |
---|
getEncodedValue, getID, isCritical |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final String OID
构造方法详细信息 |
---|
public SortControl(String sortBy, boolean criticality) throws IOException
sortBy
- 用于排序的属性 ID。
criticality
- 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
IOException
- 如果在编码控件中提供的参数时遇到错误。
public SortControl(String[] sortBy, boolean criticality) throws IOException
sortBy
- 用于排序的非 null 属性 ID 列表。列表按从高到低的排序键优先级顺序排列。
criticality
- 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
IOException
- 如果在编码控件中提供的参数时遇到错误。
public SortControl(SortKey[] sortBy, boolean criticality) throws IOException
sortBy
- 用于排序的非 null 键列表。列表按从高到低的排序键优先级顺序排列。
criticality
- 如果为 true,则服务器属性遵从控件,按照请求返回搜索结果或拒绝执行搜索。如果为 false,则服务器不必遵从控件。
IOException
- 如果在编码控件中提供的参数时遇到错误。