2013-07-16 2 views
0

이것은 내가 작성하는 샘플 스크립트입니다.제출 단추 (onclick)를 사용하여 javaScript (서버 측)에 메시지 상자를 만드는 방법

작업 : - 사용자가 시스템에 회원으로 등록하지 않은 경우 사용자에게 표시하는 팝업 메시지를 만듭니다.

- 사용자가 뷰 내에서 이름이 사용자 -if "이름으로 직원 정보"메모보기

안에 이름을 가져야합니다, 그것은 그들이 요청하는 것을 검토 알리기 위해, 검토 자에 메시지를 작성합니다.

사용자가 "이름 별 직원 정보"보기에 이름이 없으면 사용자에게 수행 할 작업을 알리는 메시지가 나타납니다. 다른 페이지에서 작업

// address book 
var db:NotesDatabase = session.getDatabase("websvr/pcs", "names", false); 
var vw2:NotesView = db.getView("($VIMPeople)"); 
var dc2:NotesDocumentCollection = vw2.getAllDocumentsByKey(document1.getItemValue("Name"),true); 
var doc2:NotesDocument=dc2.getFirstDocument(); 

while (doc2!=null){ 
sname=doc2.getItemValueString('LastName') 
doc2=dc2.getNextDocument(); 
} 
// end of address book 


//current database 
var vw:NotesView = database.getView("Staff Information By Name"); 
var doc:NotesDocument = vw.getDocumentByKey(sname, true); 


    //check whether have setting on reviewer for current user else will be hard code to specific person 
    if (doc!=null) 
    { 
     revname=doc.getItemValueString("Reviewer") 
     rev=doc.getItemValueString("ReviewerEmail"); 

     //set Email 
     var maildoc:NotesDocument=database.createDocument(); 
     var body=maildoc.createMIMEEntity(); 
     var stream=session.createStream(); 
     var content="Dear "+revname+",<br></br>"+ 

     "Please click <a href='http://"+applicationScope.hostname+"/"+(applicationScope.dbfilepath).replace(/(\\)/g, "/")+"/"+ 
     "RequisitionForm.xsp?databaseName="+applicationScope.serverCN+"!!"+ 
     applicationScope.dbfilepath+"&documentId="+ 
     document1.getDocument().getUniversalID()+ 
     "&action=editDocument'>here</a> to view it if you are in a web browser (eg: Internet Explorer, Mozilla Firefox, Google Chrome etc.)"+ 
     "<br /><br /><b>OR</b><br /><br />"+ 
     "<a href='"+document1.getDocument().getNotesURL()+"'>here</a> if you are in the Notes Client. Thank you."; 

     stream.writeText(content); 
     body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0); 
     maildoc.replaceItemValue('Subject', 'Kindly review this '+document1.getItemValueString('Item')+' request by '+document1.getItemValueString('Name')+" on "+I18n.toString(@Today(), 'dd/MM/yyyy')); 
     maildoc.send(rev); 

     document1.replaceItemValue("TotalCost",document1.getValue("Cost")*document1.getValue("Qty")); 
     document1.replaceItemValue("Status","Pending"); 
     document1.save(); 
     context.redirectToPage("/MyRequisition.xsp"); 
    } 
else 
{ 
a = 'alert("You do not have access right, please contact admin to register!")' ; 
view.postScript(a); 
break; 
} 

샘플 스크립트 :

a = 'alert("The applicant details must be unique!")' ; 
b = 'alert("Applicant Details inserted!")' ; 

var vw:NotesView = database.getView("Staff information by Name"); 

var doc:NotesDocument = vw.getDocumentByKey(getComponent("Name").getValue(), true); 

if (doc!=null){ 
view.postScript(a); 
break; 
} 
else 
{ 

var newDoc = database.createDocument(); 
newDoc.appendItemValue("Form", "Staff Form"); 
newDoc.appendItemValue("Name", getComponent("Name").getValue()); 
newDoc.appendItemValue("Designation", getComponent("Designation").getValue()); 
newDoc.appendItemValue("Department", getComponent("Department").getValue()); 
newDoc.appendItemValue("Reviewer", getComponent("Reviewer").getValue()); 
newDoc.appendItemValue("Email", getComponent("Email").getValue()); 
newDoc.appendItemValue("ReviewerEmail", getComponent("ReviewerEmail").getValue()); 
newDoc.save(); 
getComponent("Name").setValue(""); 
getComponent("Designation").setValue(""); 
getComponent("Department").setValue(""); 
getComponent("Reviewer").setValue(""); 
getComponent("Email").setValue(""); 
getComponent("ReviewerEmail").setValue(""); 
view.postScript(b); 
} 
+1

정확히 무엇이 문제입니까? 귀하의 질문에 대한 답변은 @DbLookup 및 postscript()를 사용하는 것입니다. 그래서 시도해 보셨습니까? –

+0

제 질문은 왜 코드의 첫 번째 세트에서 메시지 상자를 열 수 없는지, 두 번째 코드 세트는 View.PostScript를 사용하여 메시지 상자를 열 수 있습니까? 첫 번째 코드 집합에서 무엇이 잘못되었는지 알 수 있습니까? 그건 그렇고,이 모든 xpages 자바 스크립트를 쓰기 위해 사용하고 있습니다! –

답변

2

포스트 스크립트()는 부분 리프레시와 함께 작동합니다. 전체 새로 고침 모드의 이벤트 처리기에서 코드가 실행되는 경우 포스트 스크립트 문은 아무 효과가 없습니다.

requestScope.message = condition ? "True!" : "False!"; 

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.ui.doc%2Fwpd_controls_cref_scriptblock.html

+0

감사합니다. 누구든지 자바 스크립트 (서버 쪽)에서 메시지 상자를 만드는 방법에 대한 제안을 할 수 있습니다. 감사! –

+0

Desmond,'alert'는 자바 스크립트 언어의 일부가 아닙니다. 이것은 클라이언트 측 DOM ('window.alert')의 일부입니다. 따라서 서버 측 메시지 상자를 만들 수는 없으며 메시지 상자를 표시 할 수있는 곳이 없습니다. 프랭크 (Frank)에 의해 설명 된 접근법은 SSJS에 메시지를 작성하고 클라이언트 측 스크립트에서 처리하도록 허용합니다. – stwissel

+0

올바른 방법을 알려 주셔서 감사합니다. –

0

당신에게 : 당신의 메시지를 설정하여 SSJS에서

var message = "#{requestScope.message}"; 
if (message) { 
    alert(message); 
} 

:이 같은 뭔가 구성 요소 :

대체 솔루션은 출력 스크립트 (스크립트 블록 XP)를 사용하는 것입니다 서버 측에서 facesContext 사용자와 postscript가 JavaScript 함수를 호출 할 수 있습니다.

facesContext.getViewRoot().postScript("alert('"+documentName.getItemValueString("FieldName"));