我在xpage上有一个计算字段,其结果是HTML。在那个HTML中,我想计算一个链接,它将触发一些服务器端js函数,然后进行部分刷新。
我目前的代码如下:
<a href="#" onclick="return myFunction()">Click Here</a>
如果我的js函数是客户端函数,但是我想使用这个函数来设置文档中字段的值,这样我就需要SSJS。
从xpage中的控件托盘创建的静态链接允许链接通过部分刷新调用SSJS。如何使用计算的HTML链接执行此操作?
答案 0 :(得分:3)
另一个选项可能是创建自己的事件处理程序并通过此 article 中描述的客户端JavaScript代码执行该处理程序。所以假设您创建了一个类似这样的事件处理程序:
<xp:eventHandler event="name" id="eventhandler1a">
<xp:this.action>
<xp:saveDocument />
</xp:this.action>
</xp:eventHandler>
然后,您可以创建一个函数来通过JavaScript代码调用此事件处理程序:
XSP.executeOnServer = function () {
// the event handler id to be executed is the first argument, and is required
if (!arguments[0])
return false;
var functionName = arguments[0];
// OPTIONAL - The Client Side ID that is partially refreshed after executing the event handler
var refreshId = (arguments[1]) ? arguments[1] : "@none";
var form = (arguments[1]) ? this.findForm(arguments[1]) : dojo.query('form')[0];
// catch all in case dojo element has moved object outside of form...
if (!form)
form = dojo.query('form')[0];
// OPTIONAL - Options object containing onStart, onComplete and onError functions for the call to the
// handler and subsequent partial refresh
var options = (arguments[2]) ? arguments[2] : {};
// OPTIONAL - Value to submit in $$xspsubmitvalue. can be retrieved using context.getSubmittedValue()
var submitValue = (arguments[3]) ? arguments[3] : '';
// Set the ID in $$xspsubmitid of the event handler to execute
dojo.query('[name="$$xspsubmitid"]')[0].value = functionName;
dojo.query('[name="$$xspsubmitvalue"]')[0].value = submitValue;
this._partialRefresh("post", form, refreshId, options);
}
然后,您可以通过此客户端JavaScript代码调用事件处理程序:
XSP.executeOnServer('#{id:eventhandler1a}', '#{id:panel1}')
此处panel1
指的是部分刷新的控件。
答案 1 :(得分:1)
链接控件不是静态的。您可以计算任何您想要的内容,例如:
<xp:link escape="true" id="lnk">
<xp:this.value><![CDATA[#{javascript:"#"}]]></xp:this.value>
<xp:this.text><![CDATA[#{javascript:"Label here"}]]></xp:this.text>
</xp:link>
答案 2 :(得分:1)
如果在myFunction()
客户端功能中使用XSP对象,则可以坚持使用代码。这允许您调用部分刷新。另一种选择是调用Extlib JSON控件并在那里使用你的逻辑。取决于你的编码风格