Как проверить флажок с помощью валидатора в XPages
Как проверить флажок на стороне сервера валидатора, следующий код проверяет поле ввода, но не флажок
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Order"></xp:dominoDocument>
</xp:this.data>
<xp:checkBox text="Nop" id="checkBox1" required="true" value="#{document1.Option1}" checkedValue="1">
<xp:this.validators>
<xp:validateRequired message="click checkbox"></xp:validateRequired>
</xp:this.validators>
</xp:checkBox>
<xp:inputText id="inputText1" value="#{document1.Option2}">
<xp:this.validators>
<xp:validateRequired message="enter box"></xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:messages id="messages1"></xp:messages>
</xp:view>
2 ответа
Используйте пользовательский валидатор вместо обязательного параметра и обязательного валидатора.
<xp:checkBox text="Nop" id="checkBox1" value="#{document1.Option1}" checkedValue="1">
<xp:this.validators>
<xp:customValidator>
<xp:this.validate><![CDATA[#{javascript:
if (value != "1") {
this.setValid(false);
return "click checkbox";
}
return null;
}]]></xp:this.validate>
</xp:customValidator>
</xp:this.validators>
</xp:checkBox>
Флажок проверяется на сервере таким образом.
Просто обходной путь, и могут быть лучшие решения. Но если больше ничего не поможет, вы можете попробовать работать со вторым полем или областью видимости var:
Идея № 1: вместо использования валидатора ваш код кнопки запрашивает флажок submitValue. Если это для тебя неуместно, продолжай.
Идея № 2: не привязывать флажок к полю данных Notes, а вместо этого использовать события onclick или onchange, чтобы записать правильное значение в EditBox, который, в свою очередь, проверен
опять же: может быть, эти способы могут быть намного лучше, а я их не пробовал. - Удачи!