문제

저는 JavaScript와 Xpages를 처음으로 여기에 있습니다. 이전 노트 응용 프로그램을 XPAGES로 업그레이드하고 있습니다. XPage에서 필드, 저장 단추 및 오류 메시지가 제어됩니다. 필드는 사용자가 나중에 입력 할 NSF 경로 / 이름의 값을 나중에 (e.g : //sas/address.nsf)로 저장하는 데 사용됩니다. 경로 / 데이터베이스가 존재하는지 어떻게 유효성을 검사합니까? 이전 lotusscript는 이와 같습니다 (2 필드를 사용하는 경우, 서버 경로를 가져오고 db 경로를 가져 오기 위해 다른 하나를 사용합니다. 그러나 현재 xpage에서는 하나의 필드 만 사용하는 것입니다) :

svr$= source.FieldGetText("ServerPath")
dbsvr$= source.FieldGetText("DBPath")
Dim db1 As New NotesDatabase(svr$ , dbsvr$)

If Not db1.IsOpen  Then
Messagebox "Cannot find the database."
Call source.GotoField("DBPath")
continue = False
Exit Sub
End If
.

XPAGE의 필드에 ValidateExpression Validator를 추가했습니다. 표현식 속성에서는 다음 SSJS를 계산합니다.

var dbdir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dbdir.openDatabase(document1.getItemValue("dbpath"));
return db.isOpen();
.

유효성 검사기의 메시지 속성에서 "데이터베이스를 찾을 수 없습니다"를 입력합니다.

계속되는 오류는 다음과 같습니다.

  • 표현식이 유효하지 않습니다.
  • 표현식은 부울 값을 반환하지 않았습니다.

이 문제를 해결할 수있는 방법은 무엇입니까? 그것은 유효성 검사기의 잘못된 사용입니까? 이미 다른 서버에서 로컬 데이터베이스 및 데이터베이스로 이미 테스트했습니다. 아무도 일하지 않는 것 같습니다. 모든 데이터베이스를 시도한 모든 데이터베이스에 액세스 권한이있었습니다.

도움이 되었습니까?

해결책

SessionAssigner를 사용하여 익명으로 (로그인하지 않은 경우) 대신 xpage의 서명자로 데이터베이스를 열어야합니다.또한 잘못된 경로가있는 데이터베이스를 여는 오류를 열기 위해 DBDIR.Opendatabase () 주위를 추가하는 것을 고려하십시오.

또한 ValidateExpression Validator가 부울을 참 또는 거짓으로 반환해야합니다.dbdir.opendatabase ()는 데이터베이스를 열 수없는 경우 null을 반환합니다. 이는 null 객체에서 작동하지 않으므로 db.isopen ()이 작동하지 않기를 의미합니다.

오류 메시지를 리턴 해야하는 CustomValidator 유효성 검사기를 사용하여 고려할 수 있습니다 (그리고 부울 true 또는 false가 아님).

이 유효성 검사를 완료하는 데 도움이되기를 바랍니다.

다른 팁

데이터베이스를 열려고 시도 / catch 블록을 사용하십시오.모든 것이 좋으면 시도해보십시오.Catch Block은 잘못된 서버, 깨진 연결, 잘못된 경로, 액세스가없고, 액세스없이 가능한 대부분의 실패를 처리합니다.

try {
// open database here and touch some property, doc count, for example
return true;
} catch (e) {
return false; // failed to open database
}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top