我需要将以下行转换为JavaScript:
cOrderNumList = frmSearch.OrderNumList.Value
cOrderNumList = Replace(cOrderNumList, Chr(10), "")
aOrderNumList = Split(cOrderNumList,",")
Run Code Online (Sandbox Code Playgroud)
什么是JavaScript的等价物 Chr(10)
我试图在Lucee上的组件上使用合成访问器(虽然这个问题在ColdFusion上似乎也是一样的).
Repro代码:
// Person.cfc
component accessors=true {
property firstName;
property lastName;
function init(firstName, lastName){
variables.firstName = arguments.firstName;
variables.lastName = arguments.lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
和调用代码:
// person.cfm
person = new Person("Abigail", "Bowen");
writeDump(person);
Run Code Online (Sandbox Code Playgroud)
注意我在这里没有使用合成访问器,我纯粹是将参数值设置为同名变量范围的变量.
但是,当我运行此代码时,我看到:

请注意如何填充属性.这没有问题,但我显然不明白accessors旗帜应该如何运作.我认为它只是为了为我(它有)合成一些存取方法,但这就是全部.
另请注意,如果我将CFC定义修改为不将访问器设置为true,则转储显示如下:

因此没有合成访问器(如预期的那样),但现在甚至没有显示属性(使用变量范围值或不具有变量范围值).
我真的不明白"属性"和访问者设置的这种混淆吗?当然,访问者设置应该只影响是否创建了这些访问器方法?
如果我只是在其中一个平台上看到这个,我可能会把它归结为如何writeDump()解释属性定义的变幻莫测.但是ColdFusion 11的行为是一样的,所以看起来我的行为似乎有些不同.
有谁能解释一下?有没有解释它的文档?如果不是......嗯...为什么不呢?
我的基本担忧是,属性值没有"正确"存储,并且一旦我实现了更多的代码,可能会给我带来问题.
更新:至少在ColdFusion上,它似乎只是一个writeDump()行为的改变,因为如果有属性的getter(无论是否accessors设置了标志),那么属性值开始显示在转储中.但是Lucee的情况并非如此,所以那里仍然存在问号.
为了充分披露,这个问题是我在博客上提出的一个问题的摘要(" CFML:试图理解访问者 ").复制是故意的,因为我的博客与本网站的受众不同.
在PHP中我可能遇到这种情况:
<?php
class Person {
public $firstName;
public $lastName;
function __construct($firstName, $lastName)
{
$this->firstName = $firstName;
$this->lastName = $lastName;
}
function __toString()
{
return "{$this->firstName} {$this->lastName}";
}
}
echo new Person("Adam", "Cameron"); // Adam Cameron
Run Code Online (Sandbox Code Playgroud)
(可运行的演示)
我可以发誓在CFML中有一个等价物,例如:
// Person.cfc
component {
function init(id, firstName, lastName){
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
function toString(){
return "#this.firstName# #this.lastName#";
}
}
// test.cfm
writeOutput(new Person("Adam", "Cameron"));
Run Code Online (Sandbox Code Playgroud)
我认为这对CF11或CF2016来说是新的.
但这不行.我知道我可以做客户序列化服务器,但这不适合这里.
我也知道我可以通过其他各种方式实现相同的目标,但这不是问题.我特别要求能够实现一个toString方法或类似的方法,以便能够指定如何将对象表示为字符串.
我错误记得CFML,还是我做错了什么?
要在类似的工具PHPMD和PHPCS中进行上下文,可以为结果输出指定自定义格式化程序,例如:
PHPMD:
vendor/bin/phpmd test \\my\\namespace\\renderers\\phpmd\\AdamFormat phpmd.xml
Run Code Online (Sandbox Code Playgroud)
PHPCS:
vendor/bin/phpcs --standard=phpcs.xml --report=./src/renderers/phpcs/AdamFormat.php
Run Code Online (Sandbox Code Playgroud)
我希望为PHPUnit做同样的事情,但是因此得到了一个空白(调查,谷歌搜索,在这里搜索).看看PHPUnit的代码,这对我来说似乎有点硬编码:
if (isset($arguments['coverageClover'])) {
$this->printer->write(
"\nGenerating code coverage report in Clover XML format ..."
);
try {
$writer = new CloverReport;
Run Code Online (Sandbox Code Playgroud)
记录:
if (isset($arguments['testdoxHTMLFile'])) {
$result->addListener(
new HtmlResultPrinter(
Run Code Online (Sandbox Code Playgroud)
我没有发现文档中的任何其他地方.对我来说似乎是一个奇怪的缺陷.
所以有两个问题:
我意识到可以使用该--coverage-php选项将结果作为PHP变量输出到另一个进程然后利用来做[无论如何],但这对我来说似乎是一种由内而外的方法,并且属于Heath Robinson类别.
我有这个代码:
<cfdump eval=server>
Run Code Online (Sandbox Code Playgroud)
它输出的顶级键coldfusion,java,lucee,os,separator,servlet.请注意,railo那里没有列出.
但是,如果我这样做:
<cfdump eval=server.railo>
Run Code Online (Sandbox Code Playgroud)
然后它输出运行Railo服务器时可能期望的通常结构(而不是Lucee服务器).
那是怎么回事?
参考SimpleDateFormat文档,表示年份的模式字符是y,所以我们有像yy和yyyy(13,2013分别)的表示.没关系.
当我输出DEFAULT/ SHORT/ MEDIUM/ LONG/ FULL,大部分地方的模式,我得到的东西沿着这些路线:
(EG:新西兰)
Default: d/MM/yyyy
Short: d/MM/yy
Medium: d/MM/yyyy
Long: d MMMM yyyy
Full: EEEE, d MMMM yyyy
Run Code Online (Sandbox Code Playgroud)
然而,看一些地方,例如法国,我得到这个:
Default: j MMM aaaa
Short: jj/MM/aa
Medium: j MMM aaaa
Long: j MMMM aaaa
Full: EEEE j MMMM aaaa
Run Code Online (Sandbox Code Playgroud)
显然这里aaaa是年份的代表,但是yyyy和... 之间的意图区别是aaaa什么?IE:为什么他们使用aaaa而不是仅仅yyyy.
最初我认为它可能是法语的一部分,因为"[y] ear"是"[a]nnée"(而"[d] ay"是"[j]我们的",但我也看到它也aaaa适用于匈牙利语(和许多其他地方),匈牙利语为"年"是"év"(日"午睡"),所以我认为我正在做的"a"/"année"相关是巧合.
那么应该在这里推断出的差异是什么?
我用Google搜索,但画了一个空白.对于Java开发人员而言,它可能显而易见,但我只是一个CFML开发人员,当Java比我在原生CFML中做得更方便时,他偶尔会将Java固定到我的CFML中.如果这是一个愚蠢的问题,那很抱歉.
这是一个有效的查询,用于返回users表中包含单引号的电子邮件.
SELECT '''' +email + '''' as email
FROM users
where fname = @fname
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试在cfscript(cf9)查询中执行此操作时,如下所示:
var q = new Query(datasource="warewithal");
q.setSQL("SELECT '''' +email + '''' as email
FROM users where firstName= :firstName ");
q.addParam(name="firstName", value=trim(firstName), cfsqltype="cf_sql_varchar");
Run Code Online (Sandbox Code Playgroud)
我最终得到的是
Email
+email+
Run Code Online (Sandbox Code Playgroud)
当我期望(并通过在分析器中运行查询获得)
Email
'bozo@clowns.com'
Run Code Online (Sandbox Code Playgroud)
cfscript正在执行一个perserveSingleQuote并且不允许我将单引号添加到输出中.
这是一个错误还是我做错了什么?
在我的 ColdFusion 程序中,我为一个或多个收件人创建电子邮件 (HTML/CSS),并将其放在一个 .cfm 文件中。电子邮件格式很好。当我将保存的文件作为程序运行时,cfmail 标签将电子邮件发送给任何人,这一切正常。但是,在此过程中,我的格式丢失了。我知道当电子邮件到达其目标时,我的本地 CSS 没有理由运行。但如果我能保留我开始的格式就好了。
有没有人对我如何做到这一点有建议。
这是当前的PHP,不知道如何开始转换为Coldfusion.我需要在我的coldfusion服务器上发布这个.
<?php
/**
* Saves POST input as an XML file and returns a JSON response
*/
$xmlString;
if (isset($_POST['xmlString'])){
$filename = $_POST['xmlFilename'];
$xmlString = stripslashes($_POST['xmlString']);
$newFile = "_data/".$filename.".edit.xml";
//write new data to the file, along with the old data
$handle = fopen("../".$newFile, "w");
if (fwrite($handle, $xmlString) === false) {
echo "{error:\"Couldn't write to file.\"}";
}
else {
//echo "{filename:\"".$newFile."\"}";
echo "success:::$newFile:::$xmlString";
}
fclose($handle);
}
?>
`
Run Code Online (Sandbox Code Playgroud) 使用ColdFusion和serverside包含的人在动态页面上存在过度重新抓取的问题,因为没有datelastmodfied集,这会导致过多的服务器流量.如果你愿意,你可以笑,但是当我告诉他们解决方案是在页面上设置最后修改日期时,我会得到一个普遍的呵呵?你是怎样做的?我原先打开谷歌的一个案例,并被告知是的,这是一个页面日期问题.我已经做了很多研究,试图找到如何在标题中编写代码,以及我发现的大多数关于从页面中提取日期的内容.我确定可以使用CFHEADER标签完成.我只是不确定实施.我可以告诉他们添加类似的东西
<cfheader NAME="datelastmodified="Mon, 01 Feb 2013 08:00:00 GMT">
Run Code Online (Sandbox Code Playgroud)
就足够了?如果需要日期名称,则不确定日期格式.我试过让其中一位网站管理员试试这个吗?不,我没有.我想知道,在占用太多时间之前,我至少在正确的轨道上.到目前为止,除了使用robots.txt阻止爬行或沿着这些线路的东西之外,他们都没有自己提出解决方案.任何建议或想法将不胜感激.
coldfusion ×6
cfml ×2
lucee ×2
php ×2
coldfusion-9 ×1
email ×1
java ×1
javascript ×1
phpunit ×1
railo ×1
vbscript ×1