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

Función en Lotus Notes con Ajax

Publicado por El Lobo (30 intervenciones) el 04/07/2019 19:29:12
Ufffffff flipo. Entiendo que ese javascript esta en la web sino no tiene ningún sentido ya que podrías usar NotesUrl

Posible solución
=========================================
Porque no llamas directamente a la url del documento


http://<sitio>/<database>/<View>/<UNIVERSALID>/<Campo>?<comando> (Se que existe el comando pero no recuerdo la sintaxis final.)



También puedes crear un formulario cambiarle el tipo de respuesta y decirle a una vista que lo use. Así cuando lo abras por web con open te devolverá lo que quieras.(json,xml,html,......)

Cambiar atributo de la vista a "Treat View contents as HTML"

http://<sitio>/<database>/<View>/<Document UNID>?OpenDocument
Abrir en Notes seria notes://<sitio>/<database>/<View>/<Document UNID>?OpenDocument
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar