2014-01-19 4 views
0

t : radio의 값 (t : selectOneRadio와 연결됨)이 백업 빈에 전달되지 않는 문제가 있습니다. 현재 Jboss 7.2.0에서 MyFaces 2.1.13을 사용하여 JSF 1.x에서 JSF 2.x로 변환 중입니다. 2.0 버전의 Tomahawk 라이브러리가 있습니다. 나는 여러 가지 일을 시도하기 위해 시간을 들였지만 높고 낮게 검색했지만 다른 누구도 같은 문제를 겪지는 못했다. 값을 확인하면 setter가 호출되지 않는다고 결정했습니다.t의 값 : 라디오가 Myfaces의 Backing Bean에 전달되지 않음 2.1

코드를 추출하여 단순화했지만 아직 아약스 호출에서는 아무 것도 전달되지 않았습니다. 시간과 selectOneRadio을 :

<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와 세터가 호출됩니다. 그런 다음 t : radio를 사용하지 않고 selectOneRadio를 시도해 보았습니다. 그래서 그것은 t : radio와 관련된 이슈로 보입니다. 그러나 나는 그것이 현재 무엇인지 확실하지 않습니다. Icefaces가 비슷한 기능을 가지고 있다는 것을 알고 있지만,이 단 하나의 사용만을 위해 다른 전체 컴포넌트 라이브러리를 소개하고 싶지는 않습니다. 우리는 매우 희박한 전환 과정이기 때문에 가능한 한 많이 변경을 최소화하려고 노력하고 있습니다.

+0

= "profileReport : selectQuestionnaire"renderLogicalId = "true"에 대해 t : radio index = "0"으로 시도하십시오. 이 문제는 [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를 시작한 후에는 라이프 사이클에 포함 할 수 없습니다.