在我的汇率XPage上,我希望能够使用简单的操作确认用户输入的值。使用getComponent,我能够获得localCurrency(combobox)和effectiveDate(inputText即日期)的句柄。然后,这些值可以在确认对话框中轻松显示。但是,exchangeRate始终返回null。
这里是exchangeRate inputText:
<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>
...这里是确认,它会带来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的值?
答案 0 :(得分:2)
localCurrency和effectiveDate是否选取在浏览器中输入的值,或上次将该区域刷新到浏览器时定义的值?
您正在计算SSJS以传递给CSJS confirm()消息。我希望它能够在上次刷新时显示值,而不是用户刚刚输入的值。如果您想要最新的值,我认为您需要通过CSJS访问它们。
答案 1 :(得分:0)
这是客户端与服务器端混淆的典型错误。用户在客户端输入的值在服务器端无法访问,直到服务器端为止。由于在服务器端操作上可以使用确认简单操作,因此在使用时只能访问服务器端值。
然而,正如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命令,该命令为用户提供了对话框,但它无视响应并执行服务器端命令!糟糕!