How to specify argument attributes in CFscript? (CF9)

非 Y 不嫁゛ 提交于 2019-12-12 16:16:47

问题


In CF9 doc: Defining components and functions in CFScript, it says:

/** 
*Comment text, treated as a hint. 
*Set metadata, including, optionally, attributes, in the last entries 
*in the comment block, as follows: 
*@metadataName metadataValue 
... 
*/ 
access returnType function functionName(arg1Type arg1Name="defaultValue1" 
arg1Attribute="attributeValue...,arg2Type 
arg2Name="defaultValue2" arg2Attribute="attributeValue...,...) 
functionAttributeName="attributeValue" ... { 
body contents 
}

How do you specify arg1Attribute? I tried this:

public void function setFirstname(string firstname="" displayName="first name"){}

but it does NOT work.

Also, how do you translate this to script-style?

<cffunction name="setPerson">
  <cfargument name="person" type="com.Person"/>
</cffunction>

I tried:

function setPerson(com.Person person){}

and it does NOT work either. "You cannot use a variable reference with "." operators in this context" it says.


回答1:


Turns out this is a documentation bug. There is no way to provide metadata for an argument in a script block. You can do the hint, required, type, and defaults, but nothing else. I'm asking about the com.Person thing. Mark Mandel suggested importing com and just using Person.




回答2:


fixed in CF9 Update 1

/** This is setPerson function hint
*  @person this is person argument hint
*/
function setPerson(com.Person person){}

This will work, but CFBuilder (as of 1.0 release) will consider this invalid still.




回答3:


I just ran into the same issue and found you can do Java style import for multiple COM with a *.

import Path.To.Your.CFC.*; 

I was able to use the plain ArgType then. You might want to make sure that "Component cache" is disabled in your CF Admin or restart your server cause I am pretty sure CF will remember not finding it.

The import even "survived" 3 level of inheritance and was available in the childcomponent.



来源:https://stackoverflow.com/questions/1591716/how-to-specify-argument-attributes-in-cfscript-cf9

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!