如何忽略<br />如果<cfoutput>什么都不返回?

bla*_*arg 3 coldfusion

<cfoutput>在表中有一个放置地址变量.我遇到的问题是这些变量有时是null,但由于换行符,它们仍占用表中的空间.

   <td>  
    <cfoutput>
       #getMeeting.meetingDemographicsAddressLine1#<br />
       #getMeeting.meetingDemographicsAddressLine2#<br />
       #getMeeting.meetingDemographicsCity#
    </cfoutput>
   </td>
Run Code Online (Sandbox Code Playgroud)

<br />如果变量为null,如何让浏览器忽略标记?

chr*_*isw 5

您可以使用cffunction和创建打印行功能cfif来检查值的长度是否超过0

确保你实际上也意味着null,请参阅http://www.bennadel.com/blog/1654-Learning-ColdFusion-9-IsNull-And-Working-With-NULL-Values.htm

例子

<cffunction name="PrintLine" returntype="void">
  <cfargument name="Value" />
  <cfif len(arguments.Value) GT 0>
    <cfoutput>#arguments.Value#<br /></cfoutput>
  </cfif>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

或从功能返回: -

<cffunction name="PrintLine2" returntype="string">
  <cfargument name="Value" />
  <cfset var foo = "" />
  <cfif len(trim(arguments.Value)) GT 0>
    <cfset foo = arguments.Value & "</br />" />
  </cfif>
  <cfreturn foo />
</cffunction>
Run Code Online (Sandbox Code Playgroud)

(可选)根据需要添加返回类型/提示/必需属性

文档

请参阅http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_f_21.html

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_i_01.html

你可以这样做: -

<td>  
  <cfoutput>
   #PrintLine(getMeeting.meetingDemographicsAddressLine1)#
   #PrintLine(getMeeting.meetingDemographicsAddressLine2)#
   #getMeeting.meetingDemographicsCity#
  </cfoutput>
</td>
Run Code Online (Sandbox Code Playgroud)

  • 我会说直接输出AND并返回值的函数是不好的做法,但返回void函数在大多数语言中都很常见.http://en.wikipedia.org/wiki/Void_type (3认同)
  • 我从来没有说过一个函数可以返回任何东西,我说在函数内部使用<cfoutput>(将文本等输出到缓冲区)并不是一个好习惯 - 差别很大.一个函数应该做某事 - 但是某些事情不应该包括向缓冲区输出任何内容 - '返回一个可以输出到缓冲区的值以使其成为自定义标记'是我在编码时使用的经验法则. (2认同)