Xpages 我在确认对话框中使getComponent返回null时出现了什么编码错误?

Xpages 我在确认对话框中使getComponent返回null时出现了什么编码错误?,xpages,Xpages,在我的汇率XPage上,我希望能够通过一个简单的操作确认用户输入的值。使用getComponent,我能够获得localCurrency(组合框)和effectiveDate(作为日期的inputText)的句柄。然后在确认对话框中轻松显示这些值。但是,exchangeRate始终返回null 以下是exchangeRate输入文本: <xp:inputText style="width:75.0px;text-align:right;" id="exchangeRate" val

在我的汇率XPage上,我希望能够通过一个简单的操作确认用户输入的值。使用getComponent,我能够获得localCurrency(组合框)和effectiveDate(作为日期的inputText)的句柄。然后在确认对话框中轻松显示这些值。但是,exchangeRate始终返回null

以下是exchangeRate输入文本:

<xp:inputText style="width:75.0px;text-align:right;" id="exchangeRate"
    value="#{exchangeRateDoc.exchangeRate}"
    readonly="#{javascript:!exchangeRateDoc.isEditable();}"
    disabled="#{javascript:!@IsNewDoc();}">
    <xp:this.converter>
        <xp:convertNumber type="number"></xp:convertNumber>
    </xp:this.converter>
</xp:inputText>

…这里是confirm,它可以毫无问题地输入localCurrency和effectiveDate值,但始终将exchangeRate报告为null

<xp:confirm>
    <xp:this.message><![CDATA[#{javascript:var baseText = "Are you sure that you want to set the exchange rate for ";
var effectiveDate = getComponent("effectiveDate").getValue().toString();
var localCurrency = getComponent("localCurrency").getValue();
var exchangeRate = getComponent("exchangeRate").getValue();
return baseText + localCurrency + " to " + exchangeRate + " as of " + effectiveDate + "?"; }]]></xp:this.message>
</xp:confirm>


我的代码哪里出错了,无法获取该inputText的值?

localCurrency和effectiveDate是否提取了在浏览器中输入的值,或者上次将页面的该区域刷新到浏览器时定义的值


您正在计算要传递给CSJS confirm()消息的SSJS。我希望它在上次刷新时显示值,而不是用户刚刚输入的值。如果您想要最新的值,我认为您需要通过CSJS访问它们。

这是一个典型的错误,将客户端与服务器端混淆。用户在客户端输入的值在服务器端无法访问,直到用户将其发送到服务器。由于确认简单操作在服务器端操作上可用,因此您只能在使用它时访问服务器端值

然而,正如Paul指出的,window.confirm方法在客户端是可用的,人们可以在那里轻松地进行确认,访问客户端的值

这方面的功能代码是:

   <xp:eventHandler event="onclick" submit="true" refreshMode="complete"
        immediate="false" save="true" id="eventHandler3">
        <xp:this.script><![CDATA[var baseText = "Are you sure that you want to set the exchange rate for ";
    var effectiveDate = document.getElementById("#{id:effectiveDate}").value;
    var localCurrency = document.getElementById("#{id:localCurrency}").value;
    var exchangeRate = document.getElementById("#{id:exchangeRate}").value;
    return window.confirm (baseText + localCurrency + " to " + exchangeRate + " as of " + effectiveDate + "?");]]></xp:this.script>
        <xp:this.action><![CDATA[#{javascript:exchangeRateDoc.save();
    context.redirectToPage("/pro_exchangeRate_view.xsp")}]]></xp:this.action>
   </xp:eventHandler>

非常感谢保罗指出我的错误


编辑:确保客户端脚本返回一个值。在我的这个脚本的初始版本中,它只有window.confirm命令,该命令向用户提供对话框,但它忽略响应并执行服务器端命令!哎呀

啊,没错,它返回这两个字段的默认值,而不是用户选择的值!谢谢