尝试访问客户端备注中的编辑模式时出现xpages错误

时间:2014-09-16 07:32:15

标签: xpages lotus-notes xpages-ssjs

我试图打开一些文档。从viewPanel里面的客户端注释。该应用程序也可以在网上运行。

当我打开文档时。在读取模式下,然后单击“编辑”按钮:

<xp:button value=" Editare" id="buttonEdit"
            rendered="#{javascript:!currentDocument.isEditable()}" >

        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action>
                <xp:changeDocumentMode mode="edit" var="Contr"></xp:changeDocumentMode>
            </xp:this.action>
        </xp:eventHandler>
</xp:button>

我收到以下错误:

异常

java.lang.String与javax.faces.model.SelectItem不兼容

这只发生在笔记本客户端。

从堆栈跟踪:

 com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(Unknown Source)
 com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(Unknown Source)
 com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(Unknown Source)
 com.ibm.xsp.renderkit.html_basic.MenuRenderer.encodeEnd(Unknown Source)
 .... .... 

在逐个删除组合后,我注意到错误是在这一个,值是:

var a = [].concat(@Unique(@DbColumn(dbname, "vwA", 0))).sort();
var b = @Unique(@DbColumn(@DbName(),"vwB",0));
return a.concat(b);

任何想法为什么/我如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

错误很可能来自您的SSJS变量dbname。请仔细检查为此变量设置的值。

如果java.lang.String incompatible with javax.faces.model.SelectItem字符串而不是数组,我会收到相同的错误dbname

答案 1 :(得分:0)

可悲的是,在隔离错误时,堆栈跟踪对我没什么帮助。但是,我猜你的问题是selectItems(复数)的值被设置为字符串而不是具有多个值的东西。 selectItem(单数)可以包含字符串作为其值,但不能包含selectItems(复数)。

因此,组合框的这组selectItem有效:

<xp:selectItems>
    <xp:this.value><![CDATA[#{javascript:applicationScope.globalSettings.allCurrencies}]]></xp:this.value>
</xp:selectItems>

就像这一样:

<xp:comboBox id="emailTypeCB1" value="#{newOrgDoc.EMailType}">
    <xp:this.defaultValue><![CDATA[#{javascript:var keywordChoices = new TS_Keywords();
var tmp = keywordChoices.Lookup("Contact / email types", true);
return keywordChoices.getDefaultValue();}]]></xp:this.defaultValue>
    <xp:selectItem itemLabel="-- choose --" id="selectItem14">
    </xp:selectItem>
    <xp:selectItems id="selectItems12">
        <xp:this.value><![CDATA[#{javascript:return new TS_Keywords().Lookup("Contact / email types", true);}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

但是,如果我试过这个,如果viewScope.myChoices是一个字符串而不是具有多个值的东西,它将无法工作:

<xp:comboBox id="emailTypeCB1" value="#{newOrgDoc.EMailType}">
    <xp:selectItems id="selectItems12">
        <xp:this.value><![CDATA[#{javascript:viewScope.myChoices;}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

我认为不同之处不仅仅是你在XPiNC中打开了一个而在浏览器中打开了一个,但是每个中的值都设置不同 - 当你在Notes中时最终变成一个字符串。