2012-05-15 72 views
0

我想在我的一個JSF頁面上使用JavaScript。不幸的是,JSF中的Javascript - 「body onload =」vs</redirect>標記

<h:body onload="init('#{formBean.arrayAsString}')"> 

根本沒有被調用。我發現,如果我在導航到導航頁面的導航案例中添加/重定向標籤,該函數將加載。不幸的是,由於使用導航,我還傳遞了重要的f:param,所以formBean可以讀取它。如果我使用/重定向標籤,則參數值不再可用於讀取。

如何在不使用重定向標記的情況下加載JavaScript init函數?或者,也許我能以某種方式通過F:參數值的方式重新定向的,但據我所知,這是不可能的......

下面我發佈的導航方法:

第一.xhtml頁面:

<h:selectOneMenu id="selectMenu" value="#{indexBean.name_id}"> 
    <f:selectItems value="#{indexBean.myModelValues}" />  
    <f:ajax event="valueChange" render="button" execute="@this"/>  
</h:selectOneMenu> 
       <h:commandButton id="button" value="Go to form Browse" action="form"> 
        <f:param name="name" value="#{indexBean.name_id}" />          
       </h:commandButton> 

請記住,此按鈕也是由ajax事件重新渲染的:selectOneMenu傳遞選定的值。

和導航的情況:

<navigation-rule> 
     <from-view-id>/index.xhtml</from-view-id> 
     <navigation-case> 
      <from-outcome> 
       form 
      </from-outcome> 
      <to-view-id> 
       /form.xhtml 
      </to-view-id> 
      <redirect/> 
     </navigation-case> 
     </navigation-rule> 

重定向標記是新增加的,這使JavaScript的初始化函數。

+0

你在你的代碼中有「 Damian

+0

它是h:沒有空間的身體。 –

+0

你如何瀏覽?在faces-config.xml中使用導航規則?或者在action方法中返回一個String?或使用commandButton/commandLink操作屬性? – Damian

回答

2

如果動作被ajax調用,會發生這種情況。使其成爲非Ajax行動。


更新:根據您的問題的更新,通過<h:commandButton>更換<a4j:commandButton>,使之成爲非Ajax動作。順便說一下,在JSF 2中,如果from結果等於已經查看的ID,則不再需要導航事件。刪除整個<navigation-rule>,你不需要它。

+0

我需要改變一些其他的東西,但它的工作原理 - 像平常一樣感謝BalusC - 很棒的支持。 –

+0

不客氣。 – BalusC