0

SSJSでのsession.evaluateについて質問があります。キーワードドキュメントには、データの変換を行う@formulaが保存されています。これが次のようになるとしましょう:

@left(fieldname;2)

フィールド名に「hello」が含まれている場合、「he」になります。ここで空想するものは何もありません。これをxpageで使用したいと思います。

executeFormula(doc)という関数を作成しました。xpageのアクションからこの関数を呼び出します。このxpageには、1つのノートドキュメントデータソースが含まれています。関数呼び出しは

executeFormula(datasource.getDocument(true))

何らかの理由で、@formulaが正しく計算されないようになりました。使用する前に最初にドキュメントを保存する必要がありますsession.evaluate(kwFormula,doc)か、それとも@formulaが何らかの形で間違っていますか?

psこのコードがcustomvalidator内で機能していることを忘れました

4

3 に答える 3

3

executeFormula(doc) 関数のコードを見ないと、session.evaluate がどのように呼び出されているかを正確に知ることは非常に困難です。

とりあえず関数を等式から外して、ドキュメント ソースを含む簡単なテスト ページと、session.evaluate を含む簡単な計算フィールドを作成して、結果を確認できるようにすることをお勧めします。上記の計算フィールドの例を考えると、次のようなものになります

session.evaluate("@Left(fieldname;2)",xspDoc.getDocument(true));

許容できる結果が得られたら、それを関数に移動して、そこでも機能していることを確認できます。

session.evaluate はベクトルを返すことを忘れないでください。そのため、戻り値が null でない場合は、返された値に対して .getFirstElement() を実行する必要があります。

于 2012-07-12T21:58:46.323 に答える
1

カスタムバリデーターで使用している場合、ブラウザー/クライアントから投稿された値はデータモデル (この場合はドキュメント) をまだ更新していません。これは、検証が成功した後に発生します。

一部のフィールドで機能する可能性があると思います(たとえば、更新が成功した後に更新されるフィールド、または既存のドキュメントに保存されたフィールド)。

于 2012-07-17T10:21:10.330 に答える
-1

実際には、ドキュメントに言及する必要はありません。例:-session.evaluate( "@ username")で十分です。

あなたのsession.evaluate( "@ left('hello'; 2)")は機能します。、

于 2012-07-13T10:22:20.313 に答える