2015-03-03 1 views
2

Как проверить флажок с помощью стороны валидатор сервера, следующий код проверяет InputBox, но не флажокКак проверить флажок с помощью валидатора в 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> 

Флажок проверяется на сервере таким образом.

enter image description here

+0

спасибо, только что мне нужно –

+0

Здравствуйте, Кнут, я только что проверил это снова и проблема. до тех пор, пока я только сохраняю в кнопке, что он работает, но если я добавлю открытую страницу после сохранения, валидация, похоже, будет отброшена, попробуйте как actiongroup, так и context.redirectToPage() тот же результат, любые идеи? –

+0

Я думаю, что это связано с флажком, потому что входное поле работает и не сохраняется, если пусто –

0

просто обходной путь и могут быть лучшие решения. Но если ничего другого не поможет, вы можете попытаться работать со вторым полем или, возможно, с областью var:

идея № 1: вместо использования валидатора вы можете запросить код кнопки с кодом выставленного значения. Если это будет foien для вас, продолжайте еще выходить.

идея # 2: не связывают флажок в поле данных Notes, но вместо того, чтобы использовать его OnClick или OnChange события, чтобы написать правильное значение в EditBox, который, в свою очередь подтверждается

снова: может быть много лучшие способы, которые эти два только что выскочили, и я их не пробовал. - Удачи!