JSF search form not sending input value to Java backend

I’m stuck with a JSF search form. The input field value isn’t reaching my Java backend. Here’s what I’ve got:

<h:form>
    <h:inputText id=\"searchBox\" value=\"#{searchBean.query}\"/>
    <h:commandButton value=\"Find\" action=\"#{searchBean.doSearch}\"/>
</h:form>

In my backing bean:

@ManagedBean
@ViewScoped
public class SearchBean {
    private String query;
    
    public String doSearch() {
        // query is always null here
        List<Result> results = searchService.find(query);
        // ...
    }

    // getters and setters
}

The query is always null when doSearch() runs. I’ve double-checked my JSF and Java code, but can’t spot the issue. Any ideas what I’m missing? Thanks!

hey FlyingEagle! have u tried using ajax? It might help pinpoint where the value’s getting lost. also, are u sure ur getter/setter for query are implemented correctly? sometimes tiny typos can cause big headaches :sweat_smile: what happens if u log the query right before the search? just curious!

hey there FlyingEagle! have u tried adding a value change listener to ur inputText? sometimes that helps catch whats goin on. also, double check ur managed bean scope - ViewScoped can be tricky. maybe try RequestScoped instead and see if that fixes it? good luck!

I encountered a similar issue in one of my projects. The problem might be related to form submission. Ensure your commandButton is properly triggering the form submission. Try adding ‘immediate=“true”’ to your commandButton to see if it helps. Also, verify that your managed bean is correctly registered in faces-config.xml or through annotations. If the issue persists, consider implementing a PhaseListener to debug the lifecycle and pinpoint where the value is getting lost. Lastly, check for any validation errors that might be preventing the update of the model.