我正在尝试防止用户在申请表中插入超过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>
但是我不断收到以下错误消息:表达式无效。表达式未返回布尔值。
我已经将相同的代码放入计算字段中,并且效果很好,我是否缺少任何错,感谢您的帮助。问候,
在验证器中,您需要使用getSubmittedValue()
而不是getValue()
。请参阅我写的这篇博客文章,以详细介绍XPages的部分刷新(JSF)生命周期,这应该有助于解释为什么https://www.intec.co.uk/understanding-partial-execution-part-three-jsf-lifecycle/