我有一個網頁提供產品信息的數據表從一個產品的選擇行爲我重定向到產品信息頁面傳遞一個參數:viewscoped Bean不保存會話參數
configurableNavigationHandler.performNavigation("productInfo?faces-redirect=true&prId=" + selectedCpl.getP().getPrId());
在我viewscoped豆在我init方法我得到的請求參數,並填寫所需的對象:
@ManagedBean
@ViewScoped
public class ProductInfo implements Serializable {
private Product p;
private Integer prId;
@PostConstruct
private void init() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request.getParameter("prId") != null) {
prId = Integer.parseInt(request.getParameter("prId"));
p = pf.find(prId);
在我productInfo.xhtml我有一個產品信息視圖和對話框編輯產品信息,但是當我按下提交我的請求參數爲null :
<p:commandButton styleClass="button-edit" value="Submit" actionListener="#{productInfo.saveProduct()}" update="prodInfo" oncomplete="dlg.hide();"/>
我使用jsf 2.0與primefaces元素。
任何人都可以幫助我嗎?謝謝。
Thank you..Yes就是這種情況,但即使對象被重新創建,也無法保存更改。我使用了另一種方法,在每次重定向到productinfo頁面之前,我使用了另一種方法,並在bean頁面上顯示了bean會話,並在列表頁面上銷燬了會話對象FacesContext.getCurrentInstance()。getExternalContext()。getSessionMap()。remove(「productInfo」); ...唯一的方法,使其工作...關於其他sugestions ...我不明白爲什麼我的viewscoped bean重建ajax請求...我需要postconstruct來填充像我用的10個對象視圖 – Questionmark 2012-03-15 13:48:30
閱讀「無關」的說明。視圖範圍的bean不應該重新創建,你應該使用''。詳細的解釋/解決方案/示例已經在給定的鏈接後面提供。使用會話範圍不是解決方案,而是一種黑客/解決方法。 –
BalusC
2012-03-15 13:53:59
我閱讀了整篇文章,它幫助我改進了代碼的某些部分。我使用p:datatable和p:ajax請求選擇 - 重定向,這是我可以重定向的唯一方式。我不明白是在我做重定向後,我的productList viewscoped bean被重新構建了......並且它是有點慢。你是對的我首先使用標籤,我必須使用模板,所以我使用來包含xhtmls中的模板和內容部分中的。這是我第一個真正想讓它正確的JSF應用程序。非常感謝您的幫助。 –
Questionmark
2012-03-16 09:28:37