ドキュメントの一意のキーが必要な場合は、@Unique() を使用することに部分的です。ユーザー名と時間に基づいているのが気に入っています。
Java Bean 内からそれを取得する方法はありますか?
そうでない場合、Javaで繰り返されない一意の番号を取得する最良の方法は何ですか?
ありがとう
ドキュメントの一意のキーが必要な場合は、@Unique() を使用することに部分的です。ユーザー名と時間に基づいているのが気に入っています。
Java Bean 内からそれを取得する方法はありますか?
そうでない場合、Javaで繰り返されない一意の番号を取得する最良の方法は何ですか?
ありがとう
はい、できます。セッション呼び出しへのハンドルを取得したら、評価します。このメソッドを使用して、任意の数式を評価できます。
String ID = (String)session.evaluate("@Unique").elementAt(0);
ラッセルの答えは正しいです。ただし、より短い一意のキーが必要な場合は、次の代替手段を試すこともできます。
public static String getUnique() {
String CHARLIST = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
long number=System.currentTimeMillis();
int base=CHARLIST.length();
String result="";
while (number > 0){
result = CHARLIST.charAt((int)(number%base))+result;
number = number/base;
}
return result;
}
これは基本的に、ミリ秒数を 1970 から 62 進法に変換します。2012/12/31 などから時間を取得することで、これを短縮することもできます。
これはどうですか:
public String getUnique() {
try {
return (String) getCurrentSession().evaluate("@Unique").elementAt(0);
} catch (NotesException e) {
return "";
}
}
// retrieve handle to a Notes-Domino object in the bean class
public static Session getCurrentSession() {
FacesContext context = FacesContext.getCurrentInstance();
return (Session) context.getApplication().getVariableResolver()
.resolveVariable(context, "session");
}
おなじみの一意の文字列が返されます。残念ながら、ブラウザで実行するときの現在のユーザー名ではなく、サーバーの署名があります。私はクライアントであり、意図したとおりに機能します。