REST服务和Xpages服务器端验证

REST服务和Xpages服务器端验证,xpages,xpages-extlib,Xpages,Xpages Extlib,我是扩展库REST服务和xpages的新手,我需要找到一种方法,用服务器数据验证用户输入数据,以避免服务器往返,我计划使用REST服务 我尝试使用下面的东西,但没有运气,请任何人纠正我下面的代码是失败的 <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex" xml

我是扩展库REST服务和xpages的新手,我需要找到一种方法,用服务器数据验证用户输入数据,以避免服务器往返,我计划使用REST服务

我尝试使用下面的东西,但没有运气,请任何人纠正我下面的代码是失败的

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex"
    xmlns:xc="http://www.ibm.com/xsp/custom">


    <xp:this.data>
        <xp:dominoDocument var="document1" formName="NavConfig"></xp:dominoDocument>
    </xp:this.data>
    <xe:restService id="restService1">

        <xe:this.service>
            <xe:documentJsonService compact="true"
                formName="NavConfig">
                <xe:this.querySaveDocument><![CDATA[#{javascript:var cmp=getComponent('menuItem1').getValue();
if (cmp=""){
getComponent('msg').setValue("Validation Failed")
}}]]></xe:this.querySaveDocument>
            </xe:documentJsonService>
        </xe:this.service>
    </xe:restService>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:text escape="true" id="msg"></xp:text>
    <xp:panel style="margin-left:20.0px;margin-top:20.0px">
        <xp:table>
            <xp:tr>
                <xp:td>
                    <xp:label value="Menu item:" id="menuItem_Label1"
                        for="menuItem1">
                    </xp:label>
                </xp:td>
                <xp:td>
                    <xp:inputText value="#{document1.MenuItem}"
                        id="menuItem1">
                    </xp:inputText>
                </xp:td>
            </xp:tr>
            <xp:tr>
                <xp:td>
                    <xp:label value="Link address:"
                        id="linkAddress_Label1" for="linkAddress1">
                    </xp:label>
                </xp:td>
                <xp:td>
                    <xp:inputText value="#{document1.linkAddress}"
                        id="linkAddress1">
                    </xp:inputText>
                </xp:td>
            </xp:tr>
        </xp:table></xp:panel>
    <xp:panel style="margin-top:20.0px;margin-left:20.0px">

        <xp:button value="Save" id="button2"><xp:eventHandler event="onclick" submit="true" refreshMode="complete">
    <xp:this.action>
        <xp:save></xp:save>
    </xp:this.action></xp:eventHandler></xp:button></xp:panel>
</xp:view>

REST本质上是一个“哑”API。我宁愿说:简洁中的优雅。您从服务器获取数据,然后将其放回/发回或删除。因此,每次与REST交谈时,您都有一个服务器往返——这就是REST的构建方式

在XPages中,当客户端(JavaScript)通过REST请求数据时,该服务不会与页面上的任何组件交互,因此检查菜单或设置组件的文本对REST调用没有影响

当您想要执行客户端验证时,您需要在客户端脚本中实现该验证,否则您确实有一个服务器往返(实际上可能没有那么糟糕)

为了更灵活,我将使用自定义REST服务(也由REST控件提供)创建您自己的JSON,该JSON只包含 您实际需要的项目,但会为本地验证代码添加信息,如
{'requiredFields':[{'name':'subject','message':'嘿,对不起,我需要一个subject来处理此'},{…}]}
,以及您发回数据时的状态回复

检查样本数据库和书籍