È uscita = false per impostazione predefinita per la funzione cfscript in CFC?

StackOverflow https://stackoverflow.com/questions/978018

  •  13-09-2019
  •  | 
  •  

Domanda

Ho pensato che i metodi di CFC definiti come funzioni in cfscript sono uscita = false per impostazione predefinita, ma quando apro il CFC in cfcexplorer.cfc (browser direttamente al CFC), si dice in uscita: abilitato.

Bug di cfcexplorer.cfc?

È stato utile?

Soluzione

Risposta breve : Non ha importanza.

cfscript non visualizzerà nulla a meno che non si chiama esplicitamente writeOutput () da esso. Questo include funzioni cfscript nonché qualsiasi codice cfscript fuori di una funzione.

Questo è diverso da sintassi CF tag, che, per impostazione predefinita, in uscita almeno gli spazi tra i tag. In cfscript, qualsiasi testo che si scrive sarà compilato dal motore CFML. nei tag CF, qualsiasi testo che scrivete verrà scritto nel buffer di uscita e inviato al browser.

Risposta lunga : E 'lo stesso che non specificare un attributo di uscita.

blocchi cfscript non emettono nulla. Eventuali blocchi di tag, a meno che non avvolto in cfsilent, fanno spazio bianco di uscita se non altro. Sì, anche cffunctions fanno, ma l'output viene scartata se l'attributo di uscita è impostata su false.

L'essenza della risposta di Peter Boughton è corretta. Non è né avvolto in cfsilentcfoutput. L'uscita non è proibito, ma non accade a meno che non lo si fa in modo esplicito.

Si può sempre combinare un cffunction basato su tag con script per ottenere il meglio dei due mondi. Qualcosa di simile ...

<cffunction name="x" output="false" access="package">
    <cfargument name="y" type="string" required="false" default="YY" />
    <cfscript>
        var someValue = y & "something";
        writeOutput("test"); // this will not be written
        return someValue;
    </cfscript>
</cffunction>

Questo consente di specificare un output e di accesso sul tag cffunction così come permettono di essere argomenti opzionali (che non si può fare attraverso funzioni cfscript), quindi riempire il corpo con cfscript, comprese le dichiarazioni var e il ritorno della funzione.

Naturalmente, per questa funzione, se si rimuove l'attributo output o si cambia in true, è uscita "test" prima di tornare.

Altri suggerimenti

funzioni cfscript sono una scimmia strano. Essi sono una specie di entrambi. Non è possibile specificare che sono output = "false", ma sono fino a quando si utilizza un writeOutput (), ma sono riportati da cfcexplorer come output = "true". E 'un problema strano penso che il comitato consultivo CFML sta guardando proprio ora.

Io non sono del tutto certo, ma la mia ipotesi è che funzioni di script sono gli stessi tag cffunction a questo proposito -. A che il default non è né truefalse

L'impostazione dell'attributo output per un cffunction, i seguenti sono il caso:

  • true è equivalente alla funzione di essere avvolto in cfoutput.
  • false è equivalente alla funzione di essere avvolto in cfsilent.
  • Lasciando di default (indefinito) è equivalente a codice standard che è avvolto né con cfoutputcfsilent.

Tuttavia, ho quasi mai usare cfscript, e questo non può essere effettivamente il caso -. Dovremo aspettare che gli altri a venire avanti e confermare o correggere questo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top