XPages - отображать сообщения проверки при использовании Dojo

У меня есть XPage, который разделен на несколько панелей содержимого Dojo. Я использую клиентский JavaScript, чтобы решить, какая панель содержимого Dojo будет отображаться. Теперь я хочу добавить в XPage проверку нескольких обязательных полей. Однако для проверки как на стороне клиента, так и на стороне сервера сохранение документа запрещено, но если поле, требующее проверки, находится на панели содержимого Dojo, отличной от панели содержимого Dojo, отображаемой в данный момент, пользователь не может увидеть ошибку на стороне сервера. сообщение, и курсор не помещается в поле, которое не прошло проверку (сообщение на стороне клиента видно, но снова курсор не помещается в поле, которое не прошло проверку). Есть ли способ добавить код CSJS, который будет выполняться, когда поле не проходит проверку? (в идеале я хотел бы использовать только проверку на стороне сервера)

Вот поле, требующее проверки

<xp:inputText id="FirstName" value="#{document1.FirstName}" required="true">
    <xp:this.validators>
        <xp:validateRequired>
            <xp:this.message><![CDATA["REQUIRED"]]></xp:this.message>
        </xp:validateRequired>
        <xp:validateLength minimum="5" maximum="10">
            <xp:this.message><![CDATA["VALIDATE"]]></xp:this.message>
        </xp:validateLength>
    </xp:this.validators>
</xp:inputText>

Вот код для панели содержимого Dojo

<xe:djContentPane id="Employee">  

Здесь код CSJS для отображения или скрытия панели содержимого Dojo

var Allgemein = dojo.byId("#{id:Allgemein}");
if (sectionDisplay == "Allgemein") {
    dojo.style(Allgemein, "display", "block");
} else {
    dojo.style(Allgemein, "display", "none");
}
var sectionDisplay = dojo.cookie("sectionDisplay");

person Community    schedule 22.07.2013    source источник
comment
Было бы очень полезно, если бы вы могли включить в свой вопрос какой-нибудь фрагмент кода.   -  person Naveen    schedule 22.07.2013
comment
Вот поле, требующее проверки <xp:inputText id="FirstName" value="#{document1.FirstName}" required="true"> <xp:this.validators> <xp:validateRequired> <xp:this.message><![CDATA["REQUIRED"]]></xp:this.message> </xp:validateRequired> <xp:validateLength minimum="5" maximum="10"> <xp:this.message><![CDATA["VALIDATE"]]></xp:this.message> </xp:validateLength> </xp:this.validators> </xp:inputText> здесь код для панели содержимого dojo <xe:djContentPane id="Employee">   -  person    schedule 22.07.2013
comment
здесь код csjs для отображения или скрытия панели содержимого dojo var Allgemein = dojo.byId("#{id:Allgemein}"); if (sectionDisplay == "Allgemein") { dojo.style(Allgemein, "display", "block");} else { dojo.style(Allgemein, "display", "none"); } var sectionDisplay = dojo.cookie("sectionDisplay");   -  person    schedule 22.07.2013
comment
Комментарий - действительно не лучшее место для размещения кода. Не могли бы вы отредактировать свой вопрос и вставить в него код?   -  person Naveen    schedule 22.07.2013
comment
Вы работаете на немцев?   -  person stwissel    schedule 22.07.2013


Ответы (1)


В зависимости от того, насколько сложным должен быть ваш код, вы можете сделать несколько вещей. Если вы хотите проверить (на стороне клиента) только обязательные поля, добавьте onSubmitEvent и найдите поля с aria-required как атрибут. Из них вы создаете дисплей, который позволяет пользователю переходить к нежелательным элементам управления - пустым.

Если вы предпочитаете выполнять проверку на стороне сервера, поскольку не знаете, что именно нужно проверять, используйте сценарий загрузки (при отправке обновляется страница) или сценарий, выполняющийся после частичного обновления, который ищет атрибут aria-invalid. Затем вы можете отобразить список или список переходов со списком таблиц к требуемому элементу управления, поскольку у вас может быть несколько переходов на разных панелях.

Я бы поместил элемент управления сообщениями об ошибках (тот, который показывает ошибки проверки на стороне сервера) на панели вверху, которая всегда видна (всегда как в: если сообщения об ошибках не пусты).

имеет смысл?

person stwissel    schedule 22.07.2013
comment
Спасибо, я начну с того, что просто сделаю панель ошибок всегда видимой и посмотрю, достаточно ли этого для удовлетворения требований клиента. Я предпочитаю использовать проверку на стороне сервера, так как есть большое количество обязательных полей. - person ; 23.07.2013
comment
Проверка на стороне сервера устанавливает атрибут aria-invalid. Вы можете использовать CSS, чтобы сделать поля более видимыми, и js, чтобы помочь пользователю перейти к ним. - person stwissel; 23.07.2013