JSF 2.0 : <f:ajax> contains an unknown id

Problem

A JSF’s button with Ajax support…


<h:outputText id="output" value="#{helloBean.sayWelcome}" />
<h:form>    	
   <h:inputText id="name" value="#{helloBean.name}"></h:inputText>
   <h:commandButton value="Welcome Me">
   	 <f:ajax execute="name" render="output" />
   </h:commandButton>
</h:form>

When this page is displayed, it prompts the following error message


javax.faces.FacesException: <f:ajax> contains an unknown id 'output'
                             - cannot locate it in the context of the component j_idt8

Obviously, the id of ‘output‘ is not found, but it’s explicitly declared in the <h:outputText id=”output” /> already?

Solution

In JSF 2.0, the <f:ajax> tag required the “render” output within the same form level. The <h:outputText id=”output” /> tag should move inside the form.


<h:form>    	
   <h:outputText id="output" value="#{helloBean.sayWelcome}" />
   <h:inputText id="name" value="#{helloBean.name}"></h:inputText>
   <h:commandButton value="Welcome Me">
   	 <f:ajax execute="name" render="output" />
   </h:commandButton>
</h:form>

Reference

  1. JSF 2.0 + Ajax hello world example

11 comments on “JSF 2.0 : <f:ajax> contains an unknown id

  1. could have used :form_id:output, but the example lacked id for the form component; so pulling the ‘output’ component within the form is the only solution in this context.

    Reply
  2. This is my code , but it not working, i can’t get value of txtContent
    Any solution , please help me, Thank so much

    Reply
  3. Hi, could u please attach the folder structure with libraries and web.xml and faces-config.xml file.

    thanks

    Reply
  4. In IE9, I get the following error, but no error in Firfox and Chrome. Do you know how to solve this problem?

    malformed xml unable to get value of the property ‘removechild’ object is null or undefined

    Reply
  5. what is we need that is doesnt belong to the same form !!
    cheers!

    Reply
  6. Param,

    I try put render=”:busca_produto” but doesn’t work.

    Look the error message

    f:ajax> contains an unknown id ‘:busca_produto’ – cannot locate it in the context of the component inputNumber

    Another shot

    Message:
    javax.servlet.ServletException: inputNumber

    Help me

    Reply
  7. If you wanted to render a component outside of the form using the tag, then you must specify the render ids absolutely, ie, with respect to the top level container. So in this case render=”:output” would do the trick.

    Reply
    1. Even I tried to put the outputtextid inside the form ..Its is not working it is giving the same error.

      Reply
      1. Sorry my bad.. I had n otgiven the id=”name” in the inputtext element..

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *