简体   繁体   中英

How to get p:inputText value and set it as f:param value?

I have an xhtml page as follows

    <p:inputText id="inputFilterKey" name="inputFilterKey" value="#{key}"  />
    <p:commandButton id="filterByKey" action="searchByKey" value="Search" ajax="false">
             <f:param name="filterKey" value=? />
    </p:commandButton>

The parameter 'filterKey' should have the value which is provided by user in the inputText. Value '#{key}' is the flow scope variable which is defined in spring webflow. That is, it is not taken from a back bean. How should I get the value of the inputText? Here is the flow definition in case it is need.

    <transition on="searchByKey" to="editTexts" >
        <set name="flowScope.key" value="requestParameters.filterKey"/>
        <evaluate expression="textManager.searchByKey(key)" result="viewScope.textsByKey" result-type="dataModel"/>
    </transition>

Thanks

That isn't possible. The <f:param value> is evaluated when the form is rendered/displayed, not when the form is submitted/processed.

I'm not familiar with Spring Webflow, but this is IMO a really strange design. You might want to confirm with the SWF guys if you're doing things the right way. Perhaps you should rather inject the SWF variable as a managed bean property during its construction/initialization or something?

Anyway, there are ways to get the submitted value without binding the input component's value to a managed bean property. One of them is just getting it straight from the request parameter map by @ManagedProperty :

@ManagedProperty("#{param['formId:inputFilterKey']}")
private String key; // +setter

or when the managed bean has a broader scope than the request scope:

String key = externalContext.getRequestParameterMap().get("formId:inputFilterKey");

The formId:inputFilterKey is just the name of the generated HTML <input> element representation of the <p:inputText> component.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM