谷歌并没有提供太多内容(或者我的查询很糟糕).有人做过切换并可以分享经验吗?
我正在ColdFusion中创建一个动态PDF并遇到"pagebreak"问题.有问题的页面可能有1条记录,或最多60条记录.每条记录显示在一个表的两行中.一些返回的记录在页面之间分割(第一行位于第一页的末尾,第二行是下一行的顶行).
显示的HTML中的示例记录:
<tr>
<td>Title</td><td>Price</td>
<td colspan="2">Description</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
根据客户端请求,我试图显示=每页<9条记录.
这是我试过的一些愚蠢的样本:
<cfdocument format="PDF">
<cfoutput query = "sqllookup">
<cfset loopcount = loopcount + 1>
<cfif loopcount EQ '9'>
<cfdocumentitem type="pagebreak" />
<cfelse>
<tr>
<td>#Title#</td><td>#Price#</td>
<td colspan="2">#Description#</td>
</tr>
</cfif>
</cfoutput>
</cfdocument>
Run Code Online (Sandbox Code Playgroud)
这不起作用(它只隐藏第9条记录).我尝试了几种不同的想法,目前我很难过.我在看什么吗?
提前致谢.
ColdFusion MX 7.(我还针对文本截止问题运行了热修复 .http://kb2.adobe.com/cps/402/kb402093.html)
是否有一个coldfusion字符串函数来检查字符串是否以另一个字符串结尾?如果没有,那么实现这一目标的最简单,最有效的方法是什么?
这是我第一次编写cfc,它将从外部Web服务器捕获JSON数据,这些数据将发布信息.
我正在使用一种新服务,可以设置为通过HTTP POST将我们发送到我指定的URL,以及有关失败事务的信息的JSON数据包.
我想我已经设置了一个具有远程访问权限的CFC来捕获和反序列化JSON数据,然后我们可以采取行动.但是,我无法弄清楚如何在CFC中设置函数来接收数据?
我将URL设置为www.mydomain.com/com/processRemote.cfc?method=catchJSONdata&ReturnFormat=json
为了测试它,我设置了一个应该发布会话数据的简单测试页面:
<cfhttp
result="result"
method="post"
url="http://www.mydomain.com/com/processRemote.cfc?method=catchJSONdata&ReturnFormat=json">
<cfhttpparam type="header" name="content-type" value="application/json"/>
<cfhttpparam type="body" value="#serializeJSON(session)#"/>
Run Code Online (Sandbox Code Playgroud)
那么我迷失的地方是我在我的cfc中最初存储JSON数据的cfargument名称是什么?我无法控制将发送JSON数据的远程服务.
谢谢,
类似于以下JavaScript的东西:
var a = "a,b,c".split(",");
Run Code Online (Sandbox Code Playgroud) 我有一个ColdFusion组件,它将返回一些JSON数据:
component
{
remote function GetPeople() returnformat="json"
{
var people = entityLoad("Person");
return people;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,返回的JSON具有大写的所有属性名称:
[
{
FIRSTNAME: "John",
LASTNAME: "Doe"
},
{
FIRSTNAME: "Jane",
LASTNAME: "Dover
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法强制框架返回JSON,以便属性名称都是小写的(可能是其他人编写的自定义UDF/CFC)?
我需要一个现实检查 - 并希望解释(如果我的现实是错误的).
CF应用程序框架评估事物的方式是这个(我的理解) - 请求被传递给cfserver
cf找到application.cfm或cfc(基于遍历规则)
application.cfc执行(如果找到)
设置了此范围(可以在此处设置一系列特定于应用程序的变量
一些是必需的 - 例如"applicationTimeout" - 然后发生一系列事件 - 如果需要则触发方法.
- onApplicationStart()
---- onSessionStart()
------ onRequestStart()
等等
所以我的问题
1)这个设置发生在每个页面请求上 - 之前还有什么?
2)如果我在onApplicationStart()中设置一个应用程序变量 - 它可以在之后发生的任何进程中使用 - 并且应该在内存中持续applicationTimeout()的长度 - 正确吗?
3)所以,如果我做这样的事......
if(isdefined("application.myvar"){this.something = application.myvar;}
它应该在启动应用程序范围的初始请求之后处理任何页面请求.
但它似乎没有这样做.
我的理由是这个 - 有一些有趣的应用程序杠杆设置需要在这个范围内设置......其中一些可能是"密集的"(至少形成执行每个请求的视角 - 所以我想要只做ONCE,在持久性mem中设置一个结构,然后将它们作为这个可用.
我做了一些错误的假设吗?
谢谢
我有一个ajax调用,它从Coldfusion CFC方法请求数据并在div中显示数据.还有一个删除此数据的链接,该数据使用相同的CFC但要删除的方法不同.两种方法都可以独立工作.我似乎无法弄清楚的是如何在函数中封装调用并在删除成功后刷新div.这是代码:
ajax电话
var caseid = <cfoutput>'#URL.ID#'</cfoutput>;
var siteurl = <cfoutput>'#APPLICATION.url#'</cfoutput>;
var html = "";
function assetsPost() {
$.ajax({
cache: false,
type:'GET',
url:'cfc/cfc_Asset.cfc?method=qAsset&returnformat=json',
dataType: "json",
data: {
assetgrp_id: caseid,
},
success:function(data) {
if(data) { // DO SOMETHING
jQuery.each(data, function(i, val) {
$('#picoutputannotation').html(data[i].annotation);
var asset_id = data[i].value;
var img = siteurl + 'assets/images/thumbs_check2/' + data[i].thumb;
var removeimg = siteurl + 'assets/images/remove.png';
var annotation = data[i].annotation;
html += "<div class='block-pics'>";
html += "<img src='" + img + "'>";
html += "<div class='note'>"; …Run Code Online (Sandbox Code Playgroud) 我正在使用ChromeLogger扩展程序(无耻插件)的CF接口,它使用HTTP标头将数据从服务器端语言记录到Chrome控制台.
在请求过程中,log()可以多次调用该方法.对于每次通话,我都会以ChromeLogger正确显示数据所需的格式编写标题.在CF10中,这很好 - 每次后续调用都会setHeader()覆盖以前设置的标题,并使用相同的名称.但是,在CF9中,我看到多个具有相同名称的标头.
此示例代码演示了此问题:
<cfscript>
pc = getPageContext().getResponse();
pc.setHeader( "test-header", "value 1" );
pc.setHeader( "test-header", "value 2" );
pc.setHeader( "test-header", "value 3" );
</cfscript>
Run Code Online (Sandbox Code Playgroud)
在CF9中,我看到三个名为"test-header"的标题,每个标题都有自己的值.在CF10中,我看到一个名为"test-header"的标题,其值为"value 3".根据这个方法的Java文档,后者是正确的(强调我的):
设置具有给定名称和值的响应标头.如果已设置标头,则新值将覆盖前一个标头.containsHeader方法可用于在设置其值之前测试标头的存在.
使用cfheader标签具有相同的结果,大概是因为它只是包装了setHeader()方法.
我知道我可以在请求过程中构建标题,然后setHeader()在最后通过一次调用onRequestEnd(),但我希望这个组件尽可能自包含 - 最终用户越少修改他们的代码来实现它,越多越好.
CF9中有没有其他方法可以覆盖现有的标题?
我提前为这篇文章的篇幅道歉.我真的不太了解这个问题,无法正确识别具体问题实际上是什么!但无论如何,我们已经做出有悖于我们的会员API调用,查询有关我们的会员信息(加入日期,会员类型等)使用@Leigh提供的步骤和建议,在这里,他们一直在努力太棒了!再次感谢Leigh,我们的会员非常高兴能够做到这一点!
现在我想为我们的会员设置单点登录,允许他们在我们的页面登录,然后被提交到他们已经登录该网站的会员资料.根据API文档,我需要做的一件事是:
"使用签名证书签署登录人员的Portal用户名."
我完全坚持这个.我在表单中获得了一个XML私钥(由他们的.NET应用程序生成)
<RSAKeyValue><Modulus>{stuff}</Modulus><Exponent>{stuff}</Exponent><P>... etc etc
Run Code Online (Sandbox Code Playgroud)
我认为我无法直接使用此格式,必须将其转换为PEM格式或类似格式.使用OpenSSL,我想我已经完成了这个,现在有一个格式为"----- BEGIN PRIVATE KEY ----- {stuff} ----- END PRIVATE KEY -----"的文件.
使用Leigh的解决方案确实给了我一个签名,但它与API文档中提供的示例不匹配.我认为这是因为它使用HmacSHA1,而他们注意到"标题中的签名使用HMAC SHA1而创建安全令牌的签名使用公钥/私钥对和RSA-SHA1.同样的方法不能用于生成两者. " 我试过改变
<cfset key = key.init(jKey,"HmacSHA1") />
Run Code Online (Sandbox Code Playgroud)
至
<cfset key = key.init(jKey,"RSA-SHA1") />
Run Code Online (Sandbox Code Playgroud)
得到"算法RSA-SHA1不可用".
我曾尝试复制和粘贴其他一些建议的解决方案,但它们都不起作用.一个例子(来自12Robots.com):
<!--- Create a Java Cipher object and get a mode --->
<cfset cipher = createObject('java', 'javax.crypto.Cipher').getInstance("RSA") />
<!--- The mode tells the Cipher whether is will be encrypting or decrypting --->
<cfset encMode = cipher.ENCRYPT_MODE />
<cfset encryptedValue = …Run Code Online (Sandbox Code Playgroud) encryption coldfusion cryptography single-sign-on private-key
coldfusion ×10
coldfusion-9 ×2
json ×2
ajax ×1
cfc ×1
cfdocument ×1
cfml ×1
chromelogger ×1
cryptography ×1
encryption ×1
jquery ×1
middleware ×1
migration ×1
page-break ×1
pdf ×1
private-key ×1
railo ×1
string ×1