Javascript Apex getter返回错误的值
我在salesforce页面中有javascript函数来验证其中一个联系人是否有打开的案例。此函数调用apex getter以获取值。我面临的问题是apex getter总是返回错误的布尔值。我试着调试它,一切似乎都正常,但由于某种原因,返回的布尔值是错误的 顶点功能:Javascript Apex getter返回错误的值,javascript,salesforce,apex-code,Javascript,Salesforce,Apex Code,我在salesforce页面中有javascript函数来验证其中一个联系人是否有打开的案例。此函数调用apex getter以获取值。我面临的问题是apex getter总是返回错误的布尔值。我试着调试它,一切似乎都正常,但由于某种原因,返回的布尔值是错误的 顶点功能: public Boolean openCase{ get{ if (Contacts.size() > 0){ for(cContact wContact: dicCon
public Boolean openCase{
get{
if (Contacts.size() > 0){
for(cContact wContact: dicContacts.values()){
if(wContact.selected){
if(wContact.con.account.Number_of_open_Financial_Review_Cases__c > 1){
return true;
}
}
}
return false;
}
set{}
}
function validateOpenCases(sendEmail){
doIt = true;
oc = {!openCase}; // <<== problem here
alert(oc);
if (oc)
{
doIt=confirm('blabla?');
}
if(doIt){
// do stuff
}
else{
// do nothing
}
}
js功能:
public Boolean openCase{
get{
if (Contacts.size() > 0){
for(cContact wContact: dicContacts.values()){
if(wContact.selected){
if(wContact.con.account.Number_of_open_Financial_Review_Cases__c > 1){
return true;
}
}
}
return false;
}
set{}
}
function validateOpenCases(sendEmail){
doIt = true;
oc = {!openCase}; // <<== problem here
alert(oc);
if (oc)
{
doIt=confirm('blabla?');
}
if(doIt){
// do stuff
}
else{
// do nothing
}
}
函数验证封装(sendEmail){
doIt=true;
oc={!openCase};//您不应该直接在JavaScript中绑定Apex对象/变量(就像您有{!openCase};
)。我以前在这方面遇到过很多问题。请改用或
更新
另一种选择是使用隐藏的Visualforce输入来存储绑定的Visualforce值,然后可以在JavaScript中获取该值
下面是一个例子:
<apex:page controller="myController">
<script>
function getInputEndingWith(endsWith)
{
// put together a new Regular Expression to match the
// end of the ID because Salesforce prepends parent IDs to
// all elements with IDs
var r = new RegExp("(.*)"+endsWith+"$");
// get all of the input elements
var inputs = document.getElementsByTagName('input');
// initialize a target
var target;
// for all of the inputs
for (var i = 0; i < inputs.length; ++i)
{
// if the ID of the input matches the
// Regular Expression (ends with)
if (r.test(inputs[i].id))
{
// set the target
target = inputs[i];
// break out of the loop because target
// was found
break;
}
}
// return the target element
return target;
}
function validateOpenCases(sendEmail)
{
doIt = true;
oc = getInputEndingWith("OpenCase").value;
alert(oc);
if (oc === "true") {
doIt = confirm('Are you sure?');
}
if (doIt) {
// do stuff
}
else {
// do nothing
}
}
</script>
<apex:form>
<apex:outputpanel>
<apex:inputhidden id="OpenCase" value="{!openCase}" />
</apex:outputpanel>
<input type="button" class="btn" onclick="validateOpenCases('Send');" value="Validate" />
</apex:form>
</apex:page>
函数GetInputingWith(endsWith)
{
//组合一个新的正则表达式以匹配
//ID结尾,因为Salesforce将父ID前置到
//具有ID的所有元素
var r=new RegExp(“(.*”)+endsWith+“$”);
//获取所有输入元素
var inputs=document.getElementsByTagName('input');
//初始化目标
var目标;
//对于所有输入
对于(变量i=0;i
它应该是一个布尔否?我相信是这样“var oc=openCase()
会更有意义的,依我看。我试过了,但没什么区别。我怎么用呢?我还是Salesforce的新手,没有找到很多JavaScript远程处理或Ajax工具包的例子。你能给我一个如何应用的提示吗?我刚刚意识到我提供的一个链接工作不正常,这里有一个更好的,我想t有一个例子:。这里也有一个Ajax工具包的例子:JavaScript远程处理对我来说不太好,因为我不得不将大多数变量设置为静态,这对我的应用程序来说不太好。谢谢。我有一个问题,什么是myHiddenInput
,为什么你没有使用getInputingWith(endsWith)中传递的参数
如果(/(.*)WidgetName$/g.exec(输入[i].id))
,它将用于什么。