5

ドキュメントの一意のキーが必要な場合は、@Unique() を使用することに部分的です。ユーザー名と時間に基づいているのが気に入っています。

Java Bean 内からそれを取得する方法はありますか?

そうでない場合、Javaで繰り返されない一意の番号を取得する最良の方法は何ですか?

ありがとう

4

5 に答える 5

5

はい、できます。セッション呼び出しへのハンドルを取得したら、評価します。このメソッドを使用して、任意の数式を評価できます。

String ID = (String)session.evaluate("@Unique").elementAt(0);
于 2013-09-04T19:24:28.327 に答える
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 などから時間を取得することで、これを短縮することもできます。

于 2013-04-01T13:17:28.310 に答える
0

これはどうですか:

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");
}

おなじみの一意の文字列が返されます。残念ながら、ブラウザで実行するときの現在のユーザー名ではなく、サーバーの署名があります。私はクライアントであり、意図したとおりに機能します。

于 2013-04-01T13:56:48.593 に答える