[英]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.