2012-02-05 2 views
0

Сценарий был что-то вроде этого:Как проверить значение текстового поля, когда ушко пользователь нажмет

У меня есть 2 текстовых полей, скажем txtbox1 и txtbox2. Когда пользователь набирает что-то на txtbox1, а затем нажимает вкладку, txtbox1 теряет фокус, а txtbox2 получает фокус. Я хочу проверить значение txtbox1, когда он теряет фокус. Если значение txtbox1 недействительно, мне нужно отобразить <h:outputText value="Invalid field" rendered=#{bean.errorFlag}/>

Я использовал <p:ajax event="blur" /> на txtbox1.

Моя проблема заключается в том, что он не отображает выходной текст, даже если значение errorFlag равно true. Я также использую обновление для ajax для обновления outputText, но оно не отображает его.

+0

Если вы действительно уверены, что установлен флаг, возможно, вы не обновляете (возможно, 'h: panelGroup'), где находится' h: outputText'. т. е. установить значение для атрибута 'update' для' p: ajax'. –

+1

Адан, отправьте код более подробно. – Ravi

ответ

1

Вам необходимо указать идентификатор клиента в чтобы быть обновленный элемент в update атрибута ,

<h:inputText id="input1" value="#{bean.input1}"> 
    <p:ajax event="blur" update="input1Message" /> 
</h:inputText> 
<h:panelGroup id="input1Message"> 
    <h:outputText value="Invalid field!" rendered="#{bean.input1Error}" /> 
</h:panelGroup> 

Но ... Вы в основном изобретать JSF проверки и не принимая выгоды JSF встроенной проверки API. Я настоятельно рекомендую просто реализовать вместо этого Validator.

@FacesValidator("input1Validator") 
public class Input1Validator implements Validator { 

    @Override 
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { 
     if (isInvalid(value)) { 
      throw new ValidatorException(new FacesMessage("Invalid field!")); 
     } 
    } 

} 

и использовать его следующим образ

<h:inputText id="input1" value="#{bean.input1}"> 
    <p:ajax event="blur" update="input1Message" /> 
</h:inputText> 
<h:message id="input1Message" for="input1" /> 

Это держит ваш управляемый компонент свободен от проверки и булева беспорядка собственности.

+0

Спасибо BalusC! Я просто включил мой outText в группу панелей, чтобы обновление вступало в силу. Большое спасибо! – Adan

Смежные вопросы