Lotus Notes - Función en Lotus Notes con Ajax

   
Vista:

Función en Lotus Notes con Ajax

Publicado por Leonel (1 intervención) el 04/09/2017 23:10:59
Lo que intento realizar es algo muy sencillo pero no logro hacerlo.
Desde un formulario tengo que obtener el valor de un documento de una vista mediante la llamada de un agente que funciona con Ajax, dicho agente funciona pero no puedo obtener el valor.
Si hago el debug por consola en los navegadores el valor que intento obtener lo obtengo como respuesta del Json.
El error es:


En un formulario dentro de mi JS Header tengo la siguente función:

1
2
3
4
5
6
7
8
window.onbeforeunload=function(event) {
    event.returnValue = consulta();
	function consulta() {
		if (obtenerFlagSalir() == 'NO') {
			return true;
		}
	}
};

La función obtenerFlagSalir() realiza lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function obtenerFlagSalir() {
	var url = '/' + document.forms[0].Path.value + '/(obtenerFlagSalir)?OpenAgent';
	var jsonString = new String();
 
	jsonString = "{";
	jsonString += "DocID: '" + document.forms[0].DocumentId.value + "'";
	jsonString += "}";
 
	new Ajax(url, {
		postBody: jsonString,
		onComplete:function(req){
                        //Acá es donde tnego el problema porque no me devuelve ningún valor la función pero en consola logro ver la cadena string que me devuelve el velor desde la vista de lotus notes
			var jsonObj = Json.evaluate(req);
			var vFlag = jsonObj.flag;
			return vFlag;
		},
		onFailure: function(req){
			alert('Hubo un error en el agente (obtenerFlagSalir) con el valor del flag de la vista ($flagSalir)');
		}
	}).request();
}

El agente "(obtenerFlagSalir)" realiza lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import lotus.domino.*;
import net.sf.json.JSONObject;
import net.sf.json.JSONArray;
import java.io.PrintWriter;
 
public class JavaAgent extends AgentBase {
 
	public void NotesMain() {
 
		try {
			Session session = getSession();
			AgentContext agentContext = session.getAgentContext();
			Database db = agentContext.getCurrentDatabase();
 
 
			// JSON parser.
			lotus.domino.Document currDoc = agentContext.getDocumentContext();
			String requestContent = currDoc.getItemValueString("Request_Content");
			JSONObject jsonInput = JSONObject.fromObject(requestContent);
 
 
			// Input variables.
			String sDocID = jsonInput.get("DocID").toString(); // Clave para buscar en las vistas ($FlagSalir)
			String sFlag = getFlagValue ( db, sDocID );
 
			//Output variables.
			JSONObject jsonOutput = new JSONObject();
			jsonOutput.element("flag", sFlag);
 
			//Send json response.
			PrintWriter pw = getAgentOutput();
			pw.println("Content-Type:application/json; charset=UTF-8");
			pw.println(jsonOutput);
 
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
 
 
	String getFlagValue ( Database db, String docID ) throws Exception{
		View vFlagSalir =  db.getView( "($FlagSalir)" );
		Document docOP = vFlagSalir.getDocumentByKey(docID, true);
 
		return ( docOP.getItemValueString("flag") );
 
	}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder