在Xpages中选择2无法添加新值:错误为“0”;验证错误:值无效";

在Xpages中选择2无法添加新值:错误为“0”;验证错误:值无效";,xpages,jquery-select2-4,Xpages,Jquery Select2 4,我正在XPage中使用Select2(4.0)。我有一个组合框,它的值绑定到bean中的一个属性,选择项(目前)由我在页面加载之前填充的viewScope变量填充 用户可以键入新值,但当我要保存数据时,会出现验证错误: 这不是我写的验证错误,而是来自Xpages。虽然我可以在保存页面时输入新值(“Apple”),但它会显示此错误并删除我的新值 我相信这与新值不在可能值列表中这一事实有关,但我不确定 我发现另一个建议,在提交页面之前,我必须将新值添加到值列表中。我试过了,但也没用 我真的很喜欢s

我正在XPage中使用Select2(4.0)。我有一个组合框,它的值绑定到bean中的一个属性,选择项(目前)由我在页面加载之前填充的viewScope变量填充

用户可以键入新值,但当我要保存数据时,会出现验证错误:

这不是我写的验证错误,而是来自Xpages。虽然我可以在保存页面时输入新值(“Apple”),但它会显示此错误并删除我的新值

我相信这与新值不在可能值列表中这一事实有关,但我不确定

我发现另一个建议,在提交页面之前,我必须将新值添加到值列表中。我试过了,但也没用

我真的很喜欢select2,并希望将它用于所有的组合框和列表框,但在很多情况下需要输入新的值

组合框的代码:

<xp:comboBox id="model"
                                value="#{javascript:PCModel.model}" xp:key="field">
                                <xp:selectItems>
                                    <xp:this.value><![CDATA[#{javascript:viewScope.models}]]></xp:this.value>
                                </xp:selectItems>
                            </xp:comboBox>

和我的脚本块:

<xp:scriptBlock id="scriptBlock1">
        <xp:this.value><![CDATA[$(document).ready(
function()
{
  x$("#{id:model}").select2({

  tags: true,
  createTag: function (params) {
    return {
      id: params.term,
      text: params.term,
      newOption: true
    }
  ;},

  templateResult: function (data) {
    var $result = $("<span></span>");
    $result.text(data.text);
    if (data.newOption) {
      $result.append(" <em>(new)</em>");
    }
    return $result;
  }
}
)
}
)]]></xp:this.value>
    </xp:scriptBlock>


我认为您正在将适用于Select2 3.5.2及以下版本的解决方案与适用于4.0+的解决方案混合使用。尝试使用Select2 4.0(而不是旧的2.4版本)我有点输入了我正在使用的Select2版本。我正在使用Select2 4.0。我发现,如果我将属性“disableValidators”设置为true,那么我就不会看到上面的错误。如果表单通过验证,则一切正常。但是,如果没有,则该值返回到“-选择一个模型--”。我很确定这是因为新值不在可能值列表中。我保存了一篇关于这个的帖子,上面说如果你刷新,你必须在列表中添加新的值。我需要将它添加到viewScope.models中,我相信我会很好,。