1

我有一个如下的xhtml页面

    <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>

参数“filterKey”应具有用户在 inputText 中提供的值。值 '#{key}' 是 spring webflow 中定义的流范围变量。也就是说,它不是取自后豆。我应该如何获得 inputText 的值?这是流定义,以备不时之需。

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

谢谢

4

1 回答 1

0

那是不可能的。在<f:param value>呈现/显示表单时评估 ,而不是在提交/处理表单时评估。

我不熟悉 Spring Webflow,但这是 IMO 一个非常奇怪的设计。如果您以正确的方式做事,您可能想与 SWF 人员确认。也许您应该在构建/初始化期间将 SWF 变量作为托管 bean 属性注入或其他什么?

无论如何,有一些方法可以在不将输入组件的值绑定到托管 bean 属性的情况下获取提交的值。其中之一是直接从请求参数映射中获取它@ManagedProperty

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

或者当托管 bean 的范围比请求范围更广时:

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

formId:inputFilterKey只是组件name的生成的 HTML<input>元素表示形式<p:inputText>

于 2012-08-21T16:51:28.613 回答