2011-07-26 100 views
0

我將JSP值傳遞給JSF的支持bean。一旦我得到了bean中的值,那麼我想用setters方法爲inputText字段賦值,就像這樣。從JSP彈出窗口獲取值後,JSP頁面值沒有得到填充

public void testProcess(){ 

empBean.setEmpName(empBean.getEmpId()); 

} 

testProcess方法在JSP頁面的動作中被調用。

我的問題是,當我在bean中設置值時,我的JSF頁面的值沒有被填充。我是否需要顯式刷新我的JSF頁面,如果是的話我怎麼能做到這一點?

回答

1

是的,你需要刷新主頁面。服務器上發生的事情不會在客戶端(瀏覽器)上自動發生。

這種類型的操作的一個相當常見的模式是讓彈出窗口使用ajax進行表單發佈(易於使用許多javascript框架,如jQuery)。有關使用jQuery表單插件的一個很好的示例,請參見http://jquery.malsup.com/form/。在ajax-call的響應處理程序中,您重新加載主頁面(使用window.opener屬性)並關閉彈出窗口。在與jQuery的表格插件的例子,你會做這樣的事情:

<script type="text/javascript"> 
    // wait for the DOM to be loaded 
    $(document).ready(function() { 
     // bind 'myForm' and provide a simple callback function 
     $('#myForm').ajaxForm(function() {  
     // reload main page 
     window.opener.location.reload(); 
     // close popup 
     window.close(); 
     }); 
    }); 
</script> 

要提交用ajax形式的原因是要等待刷新主頁,直到後完成,做一個普通的帖子會導致彈出窗口重新加載,在某些瀏覽器中會使window.opener屬性失效,從而無法重新加載主頁面。

+0

我在我的jsp頁面的onclick方法中有一個JavaScript方法,我調用testProcees方法將jsp值傳遞給我的bean。因此,如果我在jsp頁面的onclick按鈕中有'window.opener.location.reload();'我能夠重新加載JSF頁面嗎?另一個問題是按鈕的onlick方法或動作方法會首先調用? – user75ponic

+0

在按鈕上沒有這樣的操作方法。只有點擊。在表單標籤上有一個action屬性,但這是使用jQuery表單處理的上述代碼。它阻止了通常的表單發佈行爲,而是使用ajax發佈。所有你需要的是一個具有適當的動作URL和提交按鈕(輸入類型=「提交」)的表單。請仔細看看我再次收錄的鏈接。 – pap