Coldfusion 显示问题两次
有人能检查一下这个代码吗?告诉我它出了什么问题?我不明白为什么它会显示两次问题 下面是根据问题类型显示问题的代码,我的意思是它将查找问题文件夹以匹配问题类型模板,然后将其与问题一起显示。 这是显示调查问题的代码Coldfusion 显示问题两次,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,有人能检查一下这个代码吗?告诉我它出了什么问题?我不明白为什么它会显示两次问题 下面是根据问题类型显示问题的代码,我的意思是它将查找问题文件夹以匹配问题类型模板,然后将其与问题一起显示。 这是显示调查问题的代码 <cfoutput> <cfset step = 0 /> <form class="form form-horizontal" action="#buildUrl(action='survey.savesurveyresults',querystrin
<cfoutput>
<cfset step = 0 />
<form class="form form-horizontal" action="#buildUrl(action='survey.savesurveyresults',querystring='surveyId=#rc.surveyid#')#" method="post">
<input type="hidden" name="id" value="0">
<input type="hidden" name="fksurveyid" value="#rc.surveyId#">
<input type="hidden" name="fkquestionid" value="#rc.questions.id#">
<fieldset>
<cfloop query="rc.questions">
<cfset step ++ />
<cfset answer = "" />
<cfmodule template="../question/#rc.questions.template#/display.cfm" step="#step#" question="#rc.questions.question#" template1="#rc.questions.template#" fkquestionid="#rc.questions.id#" answer="#answer#" required="#rc.questions.required#" result="result#step#"/>
</cfloop>
<div class="form-actions">
<button type="submit" name="submit" class="btn btn-success">Submit answers</button>
</div>
</fieldset>
</form>
</cfoutput>
这是my display.cfm,用于查看问题及其问题类型,如truefalse、yes或no
<cfparam name="attributes.yesno" default="false">
<cfoutput>
<p>#attributes.step#) #attributes.question# <cfif attributes.required EQ 1><strong>* </strong></cfif></p>
<div class="answers">
<cfif attributes.yesno>
<input type="radio" name="answer" id="answer" value="yes"<cfif attributes.answer is "yes">Checked</cfif>><label for="truefalse">Yes</label><br>
<input type="radio" name="answer" id="answer" value="no"<cfif attributes.answer is "No">Checked</cfif>><label for="truefalse">No</label>
<cfelse>
<input type="radio" name="answer" id="answer" value="true"<cfif attributes.answer is "true">Checked</cfif>><label for="truefalse">True</label><br>
<input type="radio" name="answer" id="answer" value="False"<cfif attributes.answer is "False">Checked</cfif>><label for="truefalse">False</label>
</cfif>
</div>
</cfoutput>
下面是列出问题记录的查询
<cfquery name="list">
SELECT
questions.id,
questions.question,
questions.rank,
questions.required,
questiontypes.name as questiontype,
questiontypes.template as template,
surveys.name as surveysname,
surveys.thankyoumsg as thankyoumsg
FROM questions
INNER JOIN questiontypes ON questions.fkquestiontypeid = questiontypes.id
INNER JOIN surveys ON questions.fksurveyid = surveys.id
WHERE questions.fksurveyid = <cfqueryparam cfsqltype="cf_sql_bigint" value="#arguments.surveyid#">
</cfquery>
我明白了,我一定不必像这样关闭cfmodule标记。当使用标记时,您需要记住,如果您包含结束标记或像这样关闭开始标记,ColdFusion将调用该标记两次 如合同所述: 如果您为cfmodule指定了一个结束标记,那么ColdFusion将调用您的自定义标记,就像它同时具有一个开始标记和一个结束标记一样。有关更多信息,请参阅开发ColdFusion应用程序中的处理结束标记
为了避免此功能,请不要关闭您的标签。这件事让我痛苦了好几次。我一直很喜欢结束语。但这种情况会造成伤害。如果您不了解cfmodule的行为,那么就很难进行调试。正如我上面的帖子所述,如果关闭cfmodule标记,它将执行两次。这是因为它被视为与自定义标记相同。在某些情况下,您可能希望在第一次运行时处理标记的一部分,在完成后处理其余部分。您可以在cfmodule页面的thisTag范围内访问ExecutionMode。没有结束标记,它只是在thisTag.ExecutionMode=Start模式下运行。如果关闭它,它将在结束模式下再次运行标记。如果您没有在cfmodule的代码中使用ExecutionMode做任何事情,那么整个过程将再次运行。这种行为是cfmodule如此强大的部分原因 您正在循环查询问题。有多少张唱片回来了?我怀疑是2。是的,我正在循环查询,虽然我在问题表中只有一条记录,但它确实返回了2。那么这是您的问题,还是两个问题都显示了两次?如果您的查询返回了2条记录,并且应该只返回一条,那么问题就出在您的查询的某个地方,不是你发布的代码,请作为一个新问题提问,这样就不会稀释这个问题。