Bhavesh
Bhavesh

Reputation: 4677

Although some validators in JSF are functioning well, some error messages or possibly some warnings appear on the console

In my web application in JSF, some validators such as a length validator <f:validateLength></f:validateLength>, a regular expression validator <f:validateRegex></f:validateRegex> and some other issue some error possibly a warning even if they are functioning well with no problem at all, when the JSF page is loaded.

The JSF ManagedBean is unnecessary here and the submit button presented in the following code has nothing to do with, since Ajax is fired on the valueChange event of the text field given.

Following is the simple JSF page code.


<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<h:head>
    <title>Demo</title>
</h:head>
<h:body>
    <h:form>
        <center><br/><br/><br/>
        <h:inputText id="txtDemo" required="true" requiredMessage="Mandatory." 
            validatorMessage="The field should contain al least 10 digits">

            <f:validateLength id="lenValidator" for="txtDemo" maximum="10" 
            minimum="2"/>

            <f:validateRegex pattern="[0-9]*" for="txtDemo" id="txtPattern"/>

            <f:ajax id="txtAjax" event="valueChange" execute="txtDemo msg" 

            render="txtDemo msg"/>
        </h:inputText><br/>

        <h:message id="msg" for="txtDemo" showDetail="true" style="color:red"/>
        <br/>
        <h:commandButton id="btnSubmit" value="Submit"/>
        </center>
    </h:form>
</h:body>


In the above code, although the validators <f:validateLength></f:validateLength> and <f:validateRegex></f:validateRegex> are functioning well, the length validator does not allow less than 2 and greater than 10 characters and the regular expression validator ensures that the field should contain only digits, red colored messages appear on the console, when this JSF page is load. The messages displayed are as follows.

SEVERE: /Restricted/TempTags.xhtml @12,93 id="lenValidator" Unhandled by MetaTagHandler for type javax.faces.validator.LengthValidator

SEVERE: /Restricted/TempTags.xhtml @13,82 id="txtPattern" Unhandled by MetaTagHandler for type javax.faces.validator.RegexValidator

Why are these messages displayed, event if they are functioning well with no problem?

Upvotes: 1

Views: 3139

Answers (1)

BalusC
BalusC

Reputation: 1108577

It's just telling that the id attribute of those tags is not been handled. Indeed, those tags do not support an id attribute. Remove it.

<f:validateLength for="txtDemo" maximum="10" minimum="2"/>
<f:validateRegex for="txtDemo" pattern="[0-9]*" />

The for attribute is by the way unnecessary in this construct. You could also safely remove it. The for attribute applies only when targeting validators on inputs inside composite components.

See also:


Unrelated to the concrete problem, the <center> element is deprecated since HTML 4.01 in 1998. Remove it as well. Use CSS margin: 0 auto on the containing block element with a fixed width instead.

Upvotes: 5

Related Questions