Antes de criar o seu estabelecimento, é preferível ler a documentação :Antes de começar.
A ligação dinâmica é um "token" que permite tratar os cliques de rato do utilizador sobre as zonas sensíveis da página HTML que são "tags". <a> ou as "tags" <input type='button'>.
<input type='button' adx="MyDynamicLink" value="Clicar aqui">
<a adx="MyDynamicLink">Clicar aqui</a>
Os três parâmetros principais de uma ligação dinâmica são :
1. a acção Web,
2. a página Web de destino,
3. a selecção :
A ordem da lista é a ordem seguinte o qual estes parâmetros são tratados pelo servidor XTEND.
Não existem dois tipos de acção que são :
Cada acção está declarada no dicionário por uma ficha de parametrização.
Trata-se da página afixada em volta do pedido colocado sobre o servidor.
Cada página está declarada no dicionário por uma ficha de parametrização.
A página de destino pode ser modificada pela acção.
Para modificar a página de destino por programa (L4G), utiliza o encadeamento (encadeamento programado) de ligações dinâmicas :
Valoriza um parâmetro do sub-programa com o código de ligação dinâmica (com ou sem acção/selecção) que aponta versus a página de destino.
A ligação dinâmica pode colocar uma selecção com destino do bloco principal da página alvo para modificar os critérios de selecção.
A selecção permite gerir a ligação lista do detalhe, a ordenação dos quadros ou o refinamento dos pedidos.
Para mais informações ver a documentação sobre os. "Tokens" Blocos.
Os parâmetros seguintes são tomados em conta por ligações dinâmicas.
Código | Parâmetros | Descrição |
xacceptreload | Nenhum | Força a acção da ligação dinâmica a se executar o recarregamento da página HTML (F5) mesmo se o recarregamento está bloqueado na parametrização da acção ("Activo sobre "reload") |
xparams | QueryString | Acrescenta os parâmetros na URL da ligação dinâmica |
<a adx="MyDynLink:xacceptreload&xparams=?PARCOD1=VAL1~PARCOD2=VAL2#xtdbottom">
Este exemplo :
Exemplo montante como efectuar um posicionamento no interior da página de destino (via o parâmetro HTML xparams) quando o utilizador clica sobre uma ligação dinâmica :
<!--Ligação dinãmica na página origem-->
<input type="button" value="Clicar aqui" adx="MYDYNLINK:xparams=#signet">
<a adx="MYDYNLINK:xparams=#signet">Clicar aqui</a>
<!--Página de destino-->
<body>
<!--Código HTML -->
<a name="marcador">
<!--Posicionamento da página quando o utilizador clica sobre o botão acima-->
<!--Código HTML -->
</body>
Exemplo valorizando as variáveis utilizador PARCOD1 e PARCODE com VAL1 e VAL2 (via o parâmetro HTML xparams) quando o utilizador clica sobre uma ligação dinâmica:
<!--Ligação dinãmica na página origem-->
<input type="button" value="Clicar aqui" adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">
<a adx="MYDYNLINK:xparams=?PARCOD1=VAL1~PARCOD2=VAL2">Clicar aqui</a>
A ligação lista detalhe consiste em definir uma ligação para aceder ao detalhe entidade afixada numa lista.
Por exemplo : aceder ao detalhe do artigo a partir do catálogo.
A página detalhe contém geralmente as informações complementares provindo de outras tabelas que aquela utilizada para afixar a lista.
Por exemplo : A ficha de descrição rica de um produto ou os produtos associados (cross-selling).
Inversamente o utilizador deverá poder devolver a lista a partir da página detalhe sem perder o contecto da lista (critérios de selecção, paginação...).
A ligação dinâmica selecciona uma entidade tal que o código é igual aquela da linha corrente.
A linha corrente está identificada pelo bloco ACURRENT (extremo da pilha do contexto de dados).
A ligação "Substitui a selecção do bloco principal".
<table>
<tr>
<th><b>Code</b></th>
<th><b>Literal</b></th>
</tr>
<!--Bloco lista-->
<!adx="BLKITMLST">
<tr>
<!--Ligação versus detalhe-->
<td><a adx="DLKDETAIL"><span adx="CODE"></span></td>
<td adx="DESCR"></td>
</tr>
<!adx="BLKITMLST">
</table>
O bloco mono-registo tem uma selecção de tipo "última ligação clicada" para que utilize os critérios de selecção da ligação dinâmica clicada pelo utilizador (aquele criado precedentemente com a selecção sobre ACURRENT.CODE).
<!--Bloco detalhe-->
<!adx="BLKDETAIL">
<b>Code </b><span adx="CODE"></span><br>
<b>Libellé </b><span adx="DESCR"></span><br>
<b>Prix </b><span adx="PRIX"></span><br>
<b>Stock </b><span adx="STOCK"></span><br>
<!adx="BLKDETAIL">
<!--Devolução versus a lista-->
<a adx="DLKRETOURLISTE">devolução lista</a>
Para afixar os dados complementares emitidos de uma outra tabela ou vista (por exemplo uma descrição rica de um artigo ou dos produtos associados) :
A ligação dinâmica ADLKRETURN permite de efectuar uma devolução atrás sobre as páginas XTEND que foram consultadas.
Exemplo :
Se se pagina sobre um catálogo de artigos a ligação ADLKRETURN afixará a página que precedeu a afixação do catálogo sem ter em conta das acções de paginação contrariamente à tecla "para trás" do navegador.
O motor XTEND gera uma pilha de páginas consultadas por sessão utilizador cujo tamanho é parametrizável via o parâmetro de configuração :
xtend.server.gensetup.misc.rtnstacksize (20 por defeito).
Código | Parâmetros | Acção | Descrição |
ADLKFIRSTPAGE | Não | ABLKFIRSTPAGE | Afixa a primeira página de um bloco |
ADLKNEXTPAGE | Não | ABLKNEXTPAGE | Afixa a página seguinte de um bloco |
ADLKLASTPAGE | Não | ABLKLASTPAGE | Afixa a última página de um bloco |
ADLKSELECT | Não | ABLKSELECT | Selecione a linha de um bloco |
ADLKUNSELECT | Não | ABLKUNSELECT | Des-selecione a linha de selecção de um bloco |
ADLKRESTOREFORM | Não | ARESTOREFORM | Restaura um formulário HTML com os valores iniciais |
ADLKRESTORESESSION | Não | ARESTORESESSION | Afixa a última página aberta antes do fecho do navegador |
ADLKLOGIN | Sim | ASESSLOGIN | Login do utilizador |
ADLKLOGOUT | Não | ASESSLOGOUT | Desconecta o utilizador |
ADLKSWITCHCOOKIES | Não | ASESSSWITCHCOOKIES | Permuta o modo "sem cookies" e o modo "com cookies" |
ADLKTRACESET | Não | ATRACESET | Actualização do rastro XTEND |
ADLKRETURN | Não | Não | Devolução à página precedente |
ADLKPOSTPAGE | Não | Não | Posto do formulário da página corrente e devolução sobre a mesma página |
ADLKSWITCHSITE | Sim | Não | Abre um outro estabelecimento XTEND |
ADLKSWITCHLANG | Sim | Não | Não Alteração da língua utilizador |
Campos
Os seguintes campos estão presentes neste separador :
| Código de ligação dinâmica |
| Estabelecimento Web corrente. |
| Permet de définir un intitulé associé à chaque fiche. |
Fechar
Apresentação
Parâmetros gerais da ligação dinâmica.
O quadro "Param. acesso sub-programa" está alimentado se as condicções seguintes :
Quando este quadro está não vazio, permite de definir uma selecção sobre estes parâmetros.
Fechar
Campos
Os seguintes campos estão presentes neste separador :
Seg.
| Seleccione "sim" para rastrear as chamadas à ligação dinâmica no log do servidor XTEND. |
| Seleccione "sim" para utilizar o método HTTP GET ; a ligação deve ser tomada em conta pelos motores de pesquisas (web crawlers).
|
Destino
| Seleccione :
|
| Página de destino. |
Dinamismo
| Código da entidade seleccionada se ligação dinâmica posto uma selecção para o bloco principal da página de destino.
|
| Existe três tipos de modificação dos critérios de um bloco por uma ligação dinâmica. 1. Os critérios da ligação dinâmica "Substitui a selecção do bloco principal"SELECÇÃO DO BLOCO = CRITÉRIOS DE SELECÇÃO DA LIGAÇÃO 2. Os critérios da ligação dinâmica "Substitui a selecção do bloco principal"Efectua um refinamento do pedido do bloco com os critérios da ligação. 3. Os critérios da ligação dinâmica "Se acumula à selecção em curso do bloco principal"Efectua um refinamento do pedido do bloco em acrescentando (E lógico) a selecção da ligação dinâmica ao pedido corrente do bloco.
|
| Código de acção web se a ligação dinâmica tem uma acção.
|
| Assinala a check box que para parâmetros da acção declaradas como "Campos web obrigatórios_" sejam automaticamente controlados por XTEND. |
Quadro Param. Acesso subprograma
| Código do parâmetro sub-programa. |
|
|
|
|
| Código do bloco para a origem "Token champ" |
|   |
| Código do bloco para a origem "Token champ" |
Fechar
Campos
Os seguintes campos estão presentes neste separador :
Quadro Parâmetros
| código do parâmetro da ação. |
|
|
|
|
| Código do bloco para a origem "Token champ" |
|   |
| Código do bloco para a origem "Token champ" |
Encadeamento
| Trata-se da página que será afixada se a ação está em erro.
|
| "Sim" para indicar que este tratamento L4G que reenvia o código da ligação dinâmica num parãmetro do sub-programa. Encadeamento dinâmico definido pelo tratamento L4GO tratamento L4G pode decidir da ligação dinâmica a encadear em reenviando o código da ligação num parãmetro do sub-programa.
O código da ligação dinâmica pode assim ser guardado numa variável sessão (variável utilizador).
A página afixada seguinte ao encadeamento de várias ligações dinâmicas é a página web associada à última ligação dinâmica tratada. |
|   |
|   |
Quadro Ligações
| Código da ligação dinâmica a executar. Lista das ligações dinâmicas : As ligações dinâmicas registadas na lista serão executadas sequencialemnte tanto que nenhum erro foi reenviado pelo web service. |
Fechar
Apresentação
A ligação dinâmica na capacidade de colocar uma selecção com destino do bloco principal (AMAIN) da página de destino. Se a selecção do bloco está "alterável" e se as entidades seleccionadas são idênticas, o bloco efectuará a selecção colocada pela ligação dinâmica (em função do parâmetro "Aplicação selecção")
Os campos deste separador estão activos unicamente se um código entidade foi seleccionado no campo "Selecção sobre a entidade" do ecrã "Geral".
Fechar
Campos
Os seguintes campos estão presentes neste separador :
Características
| Nenhum : seleção de todos os registos. Pedido : aplicação dos critérios de seleção do bloco. Última ligação clicada : aplicação dos critérios de seleção da ligação dinâmica que foi clicada para aceder à página que contém o bloco. |
| Não: o pedido SQL associado ao bloco não pode ser modificado por aquela de uma ligação dinâmica Sim: o pedido pode ser modificado para aquela associada a uma ligação dinâmica.
|
| Escolha de optimização proposta pelo interface. Nenhuma : Nenhuma optimização Sem blob : o interface não reenvia o campo de tipo blob Sem clob : o interface não reenvia o campo de tipo blob Nem clob, nem blob : o interface não reenvia o campo de tipo blob e clob |
Síntese selecção
| Pedido do bloco ao formato texto |
Quadro Critérios de selecção
| Operador lógico de encadeamento das operações. |
| Parenteses abertos. |
| Campo de entidade cujo valor é o primeiro operando da operação. |
| Operador de comparação. |
|
|
| Regista-se aqui o valor do parâmetro. Esta é registada segundo os casos como um número, uma data, ou um código alfanumérico. Quando o parâmetro é de tipo menu local, pode-se à escolha registar o início do título, ou o valor numérico correspondente à fila do intitulado na lista. Quando o código está controlado por uma tarefa anexa, um toque de seleção está utilizável para o escolher. |
| Código do bloco para a origem "Token champ" |
|   |
| Código do bloco para a origem "Token champ" |
| Parenteses de fecho. |
|
|
|   |
Entidade
| Indica as entidades que serão criadas a partir do resultado do pedido. |
| Interface de tipo "Acesso" dado que será chamado. |
| Tipo de interface "Acesso" dado que será chamado. |
Fechar
Campos
Os seguintes campos estão presentes neste separador :
Características
| Selecione um tipo de ordenação :
|
|
|
Quadro Ord.
| Nome do campo para a origem "Token campo". |
| Ordem de triagem Ascendente/Descendente |
Fechar
Por defeito, os seguintes listagens estão associados à função :
PRTSCR : Impressão ecran
Mas pode ser alterado por parametrização.
Este botão permite copiar uma ligação dinâmica |
Um "token" ligação dinâmica está sempre inserido como atributo de um "tag" HTML <a> ou <input type='button'>.
Quando o servidor XTEND contrói dinamicamente a página HTML : gera, no acondicionamento dos tokens ligação dinãmica, um apelo a uma função JavaScript da biblioteca XTEND (xtdDoDlk) sobre o evento onClick.
Os parâmetros da função xtdDoDlk são contextuais e vão permitir à biblioteca XTEND de constituir os dados (xml) a enviar ao servidor XTEND para tratar a acção e a selecção.
<a href="javascript:xtdDoSubmit('MYDLK',null);"
onclick="xtdDoDlk(this,'MYDLK',null,null,'XAA',0,null,event,false,'_1',false,null,false);">
<input type="button"
onclick="xtdDoDlk(this,'MYDLK',null,'MYBLOCK','XA',0,null,event,true,'',false,null,true);"
value="Add to cart"/>
Quando o utilizador clica sobre uma ligação dinâmica, o contexto de dados da página não existe mais sobre o servidor.
Existe durante a construção da página depois foi suprimida.
O servidor XTEND guarda, na página HTML (tag <span id="xtdctx">), o contexto de dados necessário ao tratamento à posteriori das selecções e acções das ligações dinâmicas.
Um dos papéis da função JavaScript xtdDoDlk é de encontrar o contexto de dados associados à ligação dinâmica para o reenviar ao servidor.
Exemplo :
Para uma ligação lista/detalhe (catálogo) pretende-se afixar a página "detalhe" objecto (artigo) sobre o qual clicamos. Esta operação consiste, para o servidor XTEND :
O facto de guardar o contexto na página HTML assegura um bom funcionamento de XTEND com a tecla "Back" do navegador.
Para chamar uma ligação dinãmica por programa em JavaScript (não gerado por XTEND), utiliza a função a seguir :
//aElmt é o elemento do DOM sobre o qual se clicou
//aDlk é o código da ligação dinâmica a chamar
//aParams é opcional e contém os parâmetros de URL (query string)
função xtdCallDlk(aElmt,aDlk,aParams){}
Esta função não pode ser utilizada que se a ligação dinãmica não tem nenhuma referência a campos XTEND nos critérios de selecção ou dos parâmetros da acção.
Apenas os critérios ou parâmetros de tipo "Campo web" são tidos em conta.
Em certos casos, o programador pode ser colocado a interceptar o clique para efectuar os controlos.
Declare uma função JavaScript de nome xtdDoMyDlk para que a biblioteca (XtendLib.js) o chama em passando em parâmetro objecto contextual aDomOut (classe CXtdDomOut) qui permite de aceder a todas as informações sobre a ligação dinâmica.
Esta função reenvia "falso" para interromper o tratamento.
função xtdDoMyDlk(aDomOut)
{
if (aDomOut.isDlk("MyDynLink"))
{
// O utilizador clicou sobre a ligação MyDynLink
return confirm("Confirmar a sua acção");
}
return true;
}
Você pode assim interceptar o processo justo antes do envio do formulário versus o servidor (submit) em criando uma função JavaScript xDoMySubmit na página :
função xDoMySubmit(aDlk,aDomOut){
// Reevia "false" para interromper o processo
return true;
}
Classe do parâmetro aDomOut que dá acesso ao contexto da ligação dinâmica.
// Reenvia o valor da variável utilizador aKey
aDomOut.getUserVar(aKey);
// Reenvia o código da ligação dinâmica sobre o qual o utilizador clicou
aDomOut.getDynLinkId();
// Reevia o índice da linha (0 a N) se o utilizador clicou
// sobre uma ligação no bloco quadro
aDomOut.getCurLineIdx();
// Reenvia "true" se o utilizador clicou sobre a ligação aArg
// aArg está seja um quadro de ligações seja uma String
aDomOut.isDlk(aArg);
if (aDomOut.isDlk("DLK1","DLK2")){
// Código utilizador clicou sobre "DLK1" ou "DLK2"
}
// Reenvia a lista dos parâmetros web (Class CXtdDlkWebParamsOut)
aDomOut.getWebParameters();
// Para conhecer o valor do parâmetro web aName
// aIdx está o índice do valor se valor múltiplo
aDomOut.getWebParameters().getParamValue(aName,aIdx)
// Reenvia um Array que contém os valores do parâmetro web aName
aDomOut.getWebParameters().getParamValues(aName)
// Reenvia o valor de um critério de selecção ou parâmetro de acção
// aFieldName é o nome do campo XTEND utilizado pelo "mapping"
aDomOut.getDlkParamValues(aFieldName);
// Idem getDlkParamValues - aParamId est l'ID do parâmetro no "mapping"
// - Para um critério de selecção ID é SEL + fila do critério (1-N)
// - Esta é a mais exacta que getDlkParamValues porque o ID contrariamente ao nome do campo XTEND
aDomOut.getDlkParamValuesById(aParamId);
Quando um parâmetro de acção está declarado como "Campo web obrigatório" a biblioteca contrôla automaticamente :
Para acrescentar os controlos suplementeres sobre os parâmetros web, acrescente a função xtdWebParamCheckValue a seguir na página HTML
Esta função está chamada para cada parâmetro web da acção associada à ligação dinâmica e reenvia "true" para validar o registo.
Ver exemplo no registo do formulário do estabelecimento ASAMPLE.
Parâmetros
função xtdWebParamCheckValue(aWebParamOut,aInputFieldName,
aInputFieldIndex,aInputFieldValue){
// Exemplo : Controlo do formato do email sobre o campo MAICOD
if (aInputFieldName=="MAICOD"){
var wEmail=xtdCheckEmail(aInputFieldValue);
if (wEmail && wEmail!=aInputFieldValue){
//Formato OK
//Actualiza-se o valor com o formato calculado por xtdCheckEmail
aWebParamOut.setValue(aInputFieldIndex,wEmail);
}
//"True" para validar o registo - "Falso" para invalidar
return wEmail!=null;
}
}
// Reenvia "True" se parâmetro obrigatório
aWebParamOut.isMandatory();
// Reenvia o índice do campo no formulário HTML
// -> Podem existir vários campos de mesmo nome num formulário (quadro)
aWebParamOut.getIndex();
// Reenvia o elemento DOM
aWebParamOut.getElement(aIdx)
//aValue é um "Array"
aWebParamOut.setValues(aValue);
//aIdx é o índice (0 - N) do valor
aWebParamOut.setValue(aIdx,aValue);
// Reenvia o valor de um outro parâmetro Web
// -> Útil se o controlo do valor de um parâmetro depende de outros parâmetros
aWebParamOut.getParamValue(aName,aIdx);
// Reenvia o valor num "Array"
aWebParamOut.getValues();
// Reenvia o valor de índice aIdx
aWebParamOut.getValue(aIdx);
// Reenvia o valor de índice 0
aWebParamOut.getFirstValue();
// Reenvia o atributo nome
aWebParamOut.getName();
// Reenvia o tipo de parâmetro definido no dicionário XTEND
aWebParamOut.isInteger();
aWebParamOut.isX3Menu();
aWebParamOut.isDecimal();
aWebParamOut.isCurrency();
aWebParamOut.isDate();
aWebParamOut.isString();
aWebParamOut.isNumeric();
// Reenvia o tipo de elemento do DOM do parâmetro
aWebParamOut.isHidden(aIdx);
aWebParamOut.isInputText(aIdx);
aWebParamOut.isCheckBox(aIdx);
aWebParamOut.isRadio(aIdx);
aWebParamOut.isTextArea(aIdx);
aWebParamOut.isSelect(aIdx);
Se a função xtdWebParamCheck está presente na página, a biblioteca XTEND chama esta função antes de efectuar o controlo do parâmetro.
Esta função reenvia "verdadeiro" para efectuar o controlo do valor e "falso" para bloquear o controlo.
Ela está particularmente útil nas listas de picking com selecção das linhas por uma check box a assinalar. Ela permite filtrar as linhas para efectuar o controlo unicamente sobre as linhas que são assinaladas.
Ver exemplo no registo do formulário do estabelecimento ASAMPLE.
Parâmetros
var gNbChecked=0;
// Reevia "true" se o parâmetro web "aInputFieldName/aInputFieldIndex" deve ser controlado
função "xtdWebParamCheck(aWebParamsOut,aInputFieldName,aInputFieldIndex){
/*
Exemplo para uma lista de picking com checkboxes (ASELECTED) para seleccionar as linhas.
Não se controla o campo AQUANTITY se a linha não está seleccionada
*/
if (aInputFieldName=="AQUANTITY"){
// gNbChecked é um contador das linhas seleccionadas
// Permite bloquear a acção se nenhuma linha foi seleccionada
if (aInputFieldIndex==0) gNbChecked=0;
// Linha selecionada se o valor de ASELECTED é igual a 1
if (aWebParamsOut.getParamValue("ASELECTED",aInputFieldIndex)=="1"){
gNbChecked++;
return true;
}
return false;
}
return true;
}
As "CheckBoxes" têm a particularidade de não serem reenviadas num formulário HTML se elas não estão assinaladas.
Este comportamento não é compatível com o motor XTEND que se baseia sobre o índice do campo no formulário HTML para associar os dados registados numa mesma linha de um quadro.
Para fazer em saida que uma "CheckBoxes" seja reenviada mesmo se ela não está assinalada a biblioteca, XTEND substitui as "CheckBoxes" não assinaladas por um campo "input hidden" de mesmo nome justo antes de enviar o formulário versus o servidor "(xtdProcessCheckBoxes)".
O valor utilizado para valorizar as "CheckBoxes" não assinaladas é dada para a variável global "gXtdCBUnSelelectedValue" que está vazia por defeito (var gXtdCBUnSelelectedValue="").
Para modificar o valor :
<script>
// "Page onLoad event"
function xBodyOnLoad()
{
// Set '0' value for unselected checkboxes
xtdSetUnSelelectedValue('0');
// Page initialization code
}
</script>
<body onLoad="xBodyOnLoad();">
<form>
//Html code
</form>
</body>
No momento de análise da página, XTEND detecta todas as "CheckBoxes" que têm um "token" adx e constitui uma lista que é enviada versus o cliente no contexto de dados da página. São as "CheckBoxes" desta lista que serão tidas em conta pela função "xtdProcessCheckBoxes".
O servidor XTEND envia ao navegador, no contexto de dados da página, as informações sobre os "Regional Settings" correspondentes à língua corrente.
Para aceder a estas informações :
var wRegSettings=gXtdDOMFactory.getXtdDomIn().getRegionalSettings();
// Separador de decimais
wRegSettings.getDecimalSep();
// Separador de milhares
wRegSettings.getThousandSep();
// Ordem da data - MDY=0 - DMY=1 - YMD=2
wRegSettings.getDateOrder();
// Data pivot para o cálculo das datas X3
wRegSettings.getDatePivot();
As funções a seguir permitem acrescentar/suprimir as variáveis e critérios utilizador.
As funções xtdAjax* colocam as variáveis sobre o servidor via um pedido Ajax, sem submeter o formulário HTML
As outras funções "(hors xtdGetUserVar)" submitem o formulário HTML
// ---------------------------------------------------------------
função xtdRemoveUserVar(aId);
função xtdSetUserVar(aId,aValue);
função xtdGetUserVar(aId);
função xtdRemoveUserCrit(aId);
// ---------------------------------------------------------------
função xtdAjaxRemoveUserVar(aId);
função xtdAjaxRemoveAllUserVar();
função xtdAjaxSetUserVar(aId,aValue);
função xtdAjaxRemoveUserCrit(aId);
função xtdAjaxRemoveAllUserCrit();
função xtdAjaxSetUserCrit(aId,aValue);
função xtdRemoveAllUserCrit();
A função a seguir afixa uma mensagem calculada pelo servidor XTEND.
A mensagem é reenviada na língua corrente do estabelecimento.
Parâmetros
função xtdAlert(aId,aP1,aP2,aP3,aP4);
// O exemplo em cima afixa
// Vocês estão conectados à aplicação com o código utilizador DIS001'
xtdAlert("ASESSLOGIN2","DIS001");
A classe a seguir dá acesso ao contexto de chamada da página para conhecer o resultado de uma acção :
var wCallCtx==gXtdDOMFactory.getXtdDomIn().getCallingCtx();
// ---------------------------------------------------------------
// CLASS CXtdCallingCtx
// ---------------------------------------------------------------
// Ligação dinâmica utilizada para aficar a página corrente
wCallCtx.getDynLink();
// "Verdadeiro" se a página é o resultado de uma acção
wCallCtx.hasAction();
// Código da acção
wCallCtx.getAction();
// "Verdadeiro" se a acção está desenvolvida - "Falso" se erro
wCallCtx.getActionResult();