ozubaba
ozubaba

Reputation: 73

Passing inputtext value as parameter

I want to pass user input to another page as a parameter. Here is my code:

 <h:form>
     <h:inputText value="#{indexBean.word}"/>
     <h:commandLink value="Ara" action="word.xhtml">
          <f:param value="#{indexBean.word}" name="word"/>
     </h:commandLink>
</h:form>

Well, this is not working. I can read the inputtext value in my backing bean but I can't send it to word.xhtml.

Here is another approach I tried:

<h:form>
     <h:inputText binding="#{indexBean.textInput}"/>
     <h:commandLink value="Ara" action="word.xhtml">
          <f:param value="#{indexBean.textInput.value}" name="word"/>
     </h:commandLink>
</h:form>

This is also not working.

So, what am I doing wrong?

Upvotes: 4

Views: 6520

Answers (1)

BalusC
BalusC

Reputation: 1108567

Your concrete problem is caused because the <f:param> is evaluated when the page with the form is requested, not when the form is submitted. So it remains the same value as on the initial request.

The concrete functional requirement is not exactly clear, but the particular functional requirement can be solved in basically two ways:

  1. Use plain HTML.

    <form action="word.xhtml">
        <input type="text" name="word" />
        <input type="submit" value="Ara" />
    </form>
    
  2. Send a redirect in action method.

    <h:form>
        <h:inputText value="#{bean.word}" />
        <h:commandButton value="Ara" action="#{bean.ara}" />
    </h:form>
    

    with

    public String ara() {
        return "word.xhtml?faces-redirect=true&word=" + URLEncoder.encode(word, "UTF-8");
    }
    

Upvotes: 2

Related Questions