簡體   English   中英

如何獲取p:inputText值並將其設置為f:param值?

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

我有一個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中定義的流范圍變量。 也就是說,它不是從back bean獲取的。 我應該如何獲取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>

謝謝

那是不可能的。 <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只是<p:inputText>組件的生成的HTML <input>元素表示形式的name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM