2012-08-01 59 views
0

我有一個循環呈現的鏈接列表。點擊鏈接我想設置一個bean屬性selectedIndex。我試圖通過將它傳遞給Ajax參數來完成,但完整的表單正在刷新。即使那時notificationPreferencesBean.retrievePreferences也沒有被解僱。這種方法是否正確?無法在ui中使用param調用ajax方法:使用f:ajax重複

這裏是我的模板片段:

<ui:repeat value="#{notificationPreferencesBean.userNotificationPreferences}" 
    var="userNotificationPreferenceVar" varStatus="idx"> 
    <li> 
     <h:commandLink 
      value="#{userNotificationPreferenceVar.notificationClassName.label}" 
      styleClass="#{userNotificationPreferenceVar.cssClassName}" 
      action="#{notificationPreferencesBean.retrievePreferences}"> 
      <f:ajax execute="@form" render="@none"> 
       <f:param value="#{idx}" name="idx" /> 
      </f:ajax> 
     </h:commandLink> 
    </li> 
</ui:repeat> 

這裏是bean聲明:

@ManagedProperty(value = "#{param.idx}") 
private Integer selectedIndex; 

有趣的是,下面的代碼工作Ajaxfully但它只是調用notificationPreferencesBean.retrievePreferences,並且不設置selectedIndex (如預期,因爲我沒有通過任何參數)

<ui:repeat value="#{notificationPreferencesBean.userNotificationPreferences}" 
    var="userNotificationPreferenceVar" varStatus="idx"> 
    <li> 
     <h:commandLink 
      value="#{userNotificationPreferenceVar.notificationClassName.label}" 
      styleClass="#{userNotificationPreferenceVar.cssClassName}" 
      action="#{notificationPreferencesBean.retrievePreferences}"> 
      <f:ajax execute="@form" render="@none" /> 
     </h:commandLink> 
    </li> 
</ui:repeat> 

還有其他方法嗎? 我只想設置selectedIndex屬性點擊鏈接ajaxfully。

回答

1

您無需爲此使用註釋@ManagedProperty

只需使用一個f:setPropertyActionListener

<ui:repeat value="#{notificationPreferencesBean.userNotificationPreferences}" 
    var="userNotificationPreferenceVar" varStatus="idx"> 
    <li> 
     <h:commandLink 
      value="#{userNotificationPreferenceVar.notificationClassName.label}" 
      styleClass="#{userNotificationPreferenceVar.cssClassName}" 
      action="#{notificationPreferencesBean.retrievePreferences}"> 
      <f:setPropertyActionListener value="#{idx}" 
       target="#{notificationPreferencesBean.selectedIndex}" /> 
      <f:ajax execute="@form" render="@none" /> 
     </h:commandLink> 
    </li> 
</ui:repeat> 
+0

感謝。像魅力一樣工作 – Paras 2012-08-01 20:24:30

+0

不客氣。 – elias 2012-08-01 21:04:37