我有以下PARAMS頁:JSF:更新和添加新的請求參數
<f:metadata>
<f:event type="preRenderView" listener="#{busquedaBean.init}" />
<f:viewParam name="k" value="#{busquedaBean.keyword}" />
<f:viewParam name="categoryId" value="#{busquedaBean.categoryId}" />
<f:viewParam name="minprice" value="#{busquedaBean.minPrice}" />
<f:viewParam name="maxprice" value="#{busquedaBean.maxPrice}" />
</f:metadata>
所有這些都是可選的。我需要做2件事情,我目前還無法做到這些:
1)添加新的參數(保留之前的參數)。這是我試圖添加價格參數:
<h:outputText value="Precio diario" />
<o:form includeRequestParams="true">
<h:outputText value="min: " />
<p:inputText id="min" value="#{busquedaBean.minPrice}" />
<h:outputText value="max: " />
<p:inputText id="max" value="#{busquedaBean.maxPrice}" />
<p:commandButton icon="ui-icon-search" ajax="false">
<f:param name="minprice" value="#{busquedaBean.minPrice}" />
<f:param name="maxprice" value="#{busquedaBean.maxPrice}" />
</p:commandButton>
</o:form>
這基本上工作,但問題是,網址沒有更新。如果URL中的參數是?minprice = 10 & maxprice = 200,並且我更新這些值,則url保持不變。如果這些參數不包含在URL中,它們將不會被添加,並且過濾器將不起作用。
2)更新param的值: 當categoryId不爲空時,我想顯示一個按鈕來清除這個參數。這是我的嘗試:
<p:button outcome="/busqueda" includeViewParams="true" >
<f:param name="categoryId=" value="" />
</p:button>
但這按鈕發出GET這個網址:/ busqueda /的categoryId =%3D &的categoryId = 1 的的categoryId PARAM出現了兩次。我怎樣才能更新現有的參數?
我使用的MyFaces 2.1.14,Tomcat的7,Primefaces 4.0,Omnifaces
謝謝!
你試過'faces- redirect = true'? –
是的,但它不起作用 – Damian
@ L-Ray faces-redirect = true是使其工作但需要做其他事情所必需的。看看我自己的答案。謝謝。 – Damian