gpt4 book ai didi

javascript - 如何将添加到列表框客户端的值存储到 sessionScope

转载 作者:行者123 更新时间:2023-11-28 19:22:29 25 4
gpt4 key购买 nike

我有一个填充有选项客户端的列表框,我需要将此列表框中的值存储到 sessionScope。

这是我的列表框

<xp:listBox id="listBox1"></xp:listBox>

这是我用来填充列表框的 jquery

$("[id$='listBox1']").append("<option value='"+ ret + "'>" + ret + "</option>")

这是我必须将列表框保存到 sessionScope 中的按钮

<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:sessionScope.pending = getComponent("listBox1").getValue()}]]></xp:this.action>
</xp:eventHandler></xp:button>

由于某种原因,列表框值未保存到我的 sessionScope 中。如果我在 DDE 中预先填充列表框,它可以工作,但这不是我想要的。

  • 我也尝试过将 listBox 绑定(bind)到数据源,但没有成功
  • 我还尝试在单击按钮之前选择值

如何将客户端填充的值获取到我的 sessionScope 中。

粘贴到新 Xpage 的完整代码(您需要 jquery 或 bootstrap 主题)

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="d" formName="Main"></xp:dominoDocument>
</xp:this.data>
<xp:button value="ADD TO LISTBOX" id="button2">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[var ret = "Testin"
$("[id$='listBox1']").append("<option value='"+ ret + "'>" + ret + "</option>")]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:listBox id="listBox1" value="#{sessionScope.pending}">
<xp:eventHandler event="onchange" submit="true" refreshMode="complete"></xp:eventHandler>
</xp:listBox>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="save" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:sessionScope.pending = getComponent("listBox1").getValue()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1" value="#{sessionScope.pending}"></xp:text>
</xp:view>

最佳答案

这可以通过简单的 RPC 调用来完成。

  1. 在您的页面中添加 RPC,在本例中我将考虑 myRPC 作为服务名称。

  2. 为此 RPC 定义一个函数,该函数将值数组作为输入。该函数只是将此数组设置在 sessionScope 变量中。在此示例中,我将函数命名为 setScopeVariable;

  3. 客户端代码为列表框构建值之后,只需调用此 RPC 函数即可。这里 listBoxValues 是一个包含值列表的数组: myRPC.setScopeVariable(listBoxValues);

  4. sessionScope 现已设置为正确的值。

通过这样做,您将不需要隐藏输入,也不需要刷新页面来设置 sessionScope。

关于javascript - 如何将添加到列表框客户端的值存储到 sessionScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com