如何在JSF中验证文本后设置焦点

时间:2013-12-18 11:58:26

标签: jsf

我的inputText字段中有一个convertDateTime =“MM / yyyy”,看起来像#

<%taglib uri ="http://java.sun.com/jsf/html" prefis"h"/>
<%taglib uri ="http://java.sun.com/jsf/core" prefis"f"/>

<h:outputLabel value=#{prop.fromLabel}" for="dateText" id="frmDateId">
<h:inputText id="id" value="Bean.details.fromDate" binding="#{Bean.fromDateInputText}">
<f:convertDateTime pattern="MM/yyyy"/>
</h:inputText>
<h:message for="dateText" errorClass="errorMessage"/>
</h:outputLabel>

我想为我为属性错误消息设置的错误消息设置焦点。我无法访问bean来设置焦点,因为错误在JSF验证级别上,因此无法为组件ID设置setFocus。请帮忙。

由于 MAC

1 个答案:

答案 0 :(得分:0)

如果您可以随意向项目添加omnifaces,我建议您在基本模板中添加o:highlight。它会自动将CSS类添加到无效组件中并聚焦第一个这样的元素。


如果你需要普通的JSF,你需要自己动手,这是一个例子:

<h:inputText id="dateIn" styleClass="#{component.valid ? '' : 'invalidInput'}" 
        value="#{bean.details.fromDate}">
    <f:convertDateTime pattern="MM/yyyy" />
</h:inputText>

那是使用引用当前组件的内置component对象(在这种情况下为<h:inputText>)。

聚焦第一个无效组件非常简单:

<h:outputScript>
    var firstInvalid = document.getElementsByClassName('invalidInput')[0];
    if (typeof firstInvalid !== 'undefined') firstInvalid.focus();
</h:outputScript>

即使您无法获得component工作权限,Max也会another Example