我试图从设置Client端JavaScript中的XPages范围变量。 我有一个包含几个部分,其显示或使用道场隐藏一个XPage。 在此XPage中我有一个按钮,用于执行一些服务器端JavaScript。 一旦按钮,执行后面的SSJS,默认情况下是可见的XPage的部分是再次可见,而不是这是立即可见之前被点击的按钮部分。 我想这是可见之前被点击的按钮按钮背后的SSJS已被执行之后也可见部分。
为此,我曾想过使用范围变量-使用客户端的JavaScript来计算的XPage这是目前可见的哪个部分,在一个范围变量设置这个值和读取的范围变量onClientLoad
XPage上的事件,再次使本节可见(并隐藏所有其他部分)。 但是,我没有发现任何来自客户端的JavaScript设置范围变量的方式。 我曾尝试加入
var xyz = "#{javascript:viewScope.put('sectionDisplay','Section')}"
到onClick
按钮的客户端事件,但不管按钮是否被点击或不此设置的范围可变。
XPages中之前,我已经使用了查询字符串从一个页面传递变量到另一个。 我现在如何才能做到这一点?
另一种方法:也许你并不需要范围的变量在所有的,如果你只是想隐藏的东西,你可以设置它的样式属性“显示:无”。
例如,你有这个div: <xp:div id="mydiv">...</xp:div>
然后你可以使用一个按钮下面CSJS:
dojo.byId("#{id:mydiv}").style.display="none"
你不能设置CSJS变量是这样的:如果你将此代码添加到您的CSJS,它会被计算之前发送给浏览器。 这就是为什么变量设置点击到按键无关。
但是,你可以添加一些SSJS码到您的按钮,设置viewScope变量。 您可以在此描述与参数从浏览器发送的值: http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_events_and_partial_or_full_refresh#Run+a+partial+update+from+client+javascript
编辑:
您可以在SSJS param对象访问不同的参数。 铁如果您在CSJS添加参数值 ...
XSP.partialRefreshGet( id, {
params: { 'value': 'some string'}
});
...您可以访问参数SSJS是这样的:
param.get("value");
取决于你的使用情况。 如果你想与部分/完全刷新设置,你可以简单地把隐藏编辑成XP,将其绑定到anyScope.variable_name
与CSJS其值设置:
var field = document.getElementById("#{id:hiddenInput1}");
field.value = "new Value";
每次刷新会提交其价值模型,将在范围的变量可用。
另一种选择是在任何地方使用事件处理程序与SSJS基础上隐藏的输入值或提交的值设定范围的变量,在埃里克森的回答说。
XSP.partialRefreshGet( id, {
params: { 'value': 'some string'}
});
... you can access the parameter in SSJS like this:
param.get("value");
我从一个网格传递UNID一个对话框。 我能得到param.get(“UNID”),但我不能将其设置为文件数据源UNID。 因此,该领域将与从后端文档值填充。 有许多领域,所以我想以某种方式填充该数据源,而无需在每个字段写入值。 我怎样才能获得文档数据源识别param.unid? 像你描述,但该值也不提交,我有一个隐藏的输入尝试。 那可能吗?
XSP.partialRefreshGet(dialogId,
{
params: xspParams,
onStart: function(){
//dojo.style(loadingGifId,'display','block');
XSP.getElementById("#{id:inputText1}").innerHTML = unid; //not working
XSP.getElementById("#{id:inputText1}").value = unid; //not working either
},
onComplete: function(){
dijit.byId(dialogId).show();
//dojo.style(loadingGifId,'display','none');
}});
<xp:panel id="dialog">
<input id="inputText1"
value="#{javascript:sessionScope.personUNID;}">
</input>
<xp:this.data>
<xp:dominoDocument var="docPerson" action="editDocument"
formName="fUserName">
<xp:this.documentId><![CDATA[#{javascript:sessionScope.personUNID ;}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>
<xp:inputText id="cfParams"
value="#{javascript:param.get('unid');}">
</xp:inputText>
</xp:panel>