[XPAGE validateexpression问题在时间字段中

问题描述 投票:0回答:1

我正在尝试防止用户在申请表中插入超过2个小时的时间,这是我的代码:我已经在“ Heure_fin”字段中写入了我的验证代码,这是一个时间字段,用于计算“ Heur_fin”和“ heur_debut”之间的差异]

<xp:inputText value="#{document1.Heure_fin}"
                id="heur_fin"
                style="width:31.0%;font-family:Verdana,sans-serif;height:20px"
                disableClientSideValidation="true">
                <xp:this.converter>
                    <xp:convertDateTime type="time"
                        timeStyle="short">
                    </xp:convertDateTime>
                </xp:this.converter>

                <xp:this.validators>


                    <xp:validateRequired message="required field"></xp:validateRequired>


                    <xp:validateExpression>


<xp:this.expression><![CDATA[#{javascript:
var dStart:NotesDateTime =session.createDateTime(getComponent("date_debut1").getValue());
var hStart:NotesDateTime =session.createDateTime(getComponent("heur_debut1").getValue());
var dateTimeStart:NotesDateTime=session.createDateTime(dStart.getDateOnly()+" "+hStart.getTimeOnly())
var hEnd:NotesDateTime=session.createDateTime(getComponent("heur_fin").getValue());
var dateTimeEnd:NotesDateTime=session.createDateTime(dStart.getDateOnly()+" "+hEnd.getTimeOnly())
var hours = dateTimeEnd.timeDifferenceDouble(dateTimeStart)
if ((hours/3600)<=2)

{
     return true
}else
    return false

}]]></xp:this.expression>
                        </xp:validateExpression>
                    </xp:this.validators>
                    <xp:dateTimeHelper id="dateTimeHelper4"></xp:dateTimeHelper>


                </xp:inputText>

但是我不断收到以下错误消息:表达式无效。表达式未返回布尔值。

我已经将相同的代码放入计算字段中,并且效果很好,我是否缺少任何错,感谢您的帮助。问候,

validation expression xpages
1个回答
0
投票

在验证器中,您需要使用getSubmittedValue()而不是getValue()。请参阅我写的这篇博客文章,以详细介绍XPages的部分刷新(JSF)生命周期,这应该有助于解释为什么https://www.intec.co.uk/understanding-partial-execution-part-three-jsf-lifecycle/

© www.soinside.com 2019 - 2024. All rights reserved.