2014-01-19 15 views
0

我有一個問題,t:radio(與t:selectOneRadio相關)的值沒有傳遞給後臺bean。目前我們正在將JSF 1.x轉換爲JSF 2.x,在Jboss 7.2.0上使用MyFaces 2.1.13,並且我們有2.0版本的Tomahawk庫。我花了幾個小時嘗試不同的事情,以使其工作和搜索高低,但無法找到其他人遇到同樣的問題。我已經確定,一旦檢查了值,setter就不會被調用。t:radio沒有被傳遞給Myfaces中的後臺Bean 2.1

我已經提取了代碼並簡化了它,但仍然沒有任何內容傳遞給ajax調用。

<h:form id="profileReport"> 

    <h:messages /> 

    <h:panelGrid columns="2"> 

     <t:selectOneRadio id="selectQuestionnaire" layout="spread" required="true" 
       value="#{viewProfile.selectedQuestionnaire}"> 
      <f:selectItem itemValue="SC_PRE!20121212095427.0000000.059814626868021525" /> 
      <f:ajax event="click" execute="@this" render="profileReport:selectTemplate profileReport" />  
     </t:selectOneRadio> 

     <h:outputLabel for="selectQuestionnaire" value="#{prmsgs.firstQuestionnaireLabel}" styleClass="labelText" /> 
     <t:radio index="0" for="profileReport:selectQuestionnaire" /> 

     <h:outputLabel for="selectTemplate" value="#{prmsgs.exploratoryProcessTemplate}:" styleClass="labelText" /> 
     <h:selectOneListbox id="selectTemplate" value="#{viewProfile.selectedInterpretiveProfileTemplateId}" required="#{menuNavigation.selectInterpretiveProfileActive}"> 
      <f:selectItems value="#{viewProfile.interpretiveProfileTemplates}"/> 
     </h:selectOneListbox> 
    </h:panelGrid> 
</h:form> 

只是爲了測試目的,我已經取代了T:selectOneRadio使用h:selectOneRadio和setter方法被調用。然後,我嘗試了t:selectOneRadio,但沒有t:radio並且工作正常。所以這似乎是t:radio的問題,但我不確定這是什麼。我知道Icefaces具有類似的功能,但我不想在此時單獨使用另一個完整的組件庫。我們試圖儘可能減少變化,因爲這是一個非常精簡的轉換過程。

+0

嘗試使用t:radio index =「0」for =「profileReport:selectQuestionnaire」renderLogicalId =「true」。我發現這是在[TOMAHAWK-1551](https://issues.apache.org/jira/browse/TOMAHAWK-1551) – lu4242

+0

@ lu4242解決的感謝。我嘗試添加該代碼,但尚未解決問題。該setter仍然沒有被調用 - 我嘗試renderLogicalId true和false只是爲了看看會發生什麼,也不會導致任何功能的變化。 – RobG

+0

嘗試將f:ajax中的execute =「@ this」更改爲執行=「@ form」。可能t:radio內的值沒有在ajax請求中處理。 – lu4242

回答

1

當使用t:selectOneRadio layout =「spread」時,t:selectOneRadio是一個組件,t:radio是另一個組件,即使它們一起工作。在這種情況下,當執行ajax請求時,將通過t:selectOneRadio執行生命週期,但不會爲t:radio執行生命週期。 f:ajax組件不能以這種方式被覆蓋,所以在生命週期啓動後不可能包含t:radio。

相關問題