Проблема проверки правильности выражения XPAGE во временном поле - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь запретить пользователю вставлять период более 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>

, но я получаю следующее сообщение об ошибке: Выражение недопустимо. Выражение не вернуло логическое значение.

Я поместил тот же код в вычисляемое поле, и он отлично работает, есть что-то не так, что я пропускаю, я ценю вашу помощь. С уважением,

1 Ответ

2 голосов
/ 14 февраля 2020

В валидаторе вам нужно использовать getSubmittedValue() вместо getValue(). Посмотрите эту запись в блоге, которую я сделал, чтобы дать более подробную информацию о частичном жизненном цикле refre sh (JSF) XPages, который должен помочь объяснить, почему https://www.intec.co.uk/understanding-partial-execution-part-three-jsf-lifecycle/

...