2014-09-16 9 views
0

<p:selectOneRadio>의 기본값을 설정하는 데 문제가 있습니다. 관련 주제를 읽었지만 문제에 대한 답을 찾을 수 없었습니다. 거기는 지금 작동하는 방법이다 : 나는() showLogEntryClassificationDlg를 사용하여, <p:commandButton>에 클릭 후 내 백업 콩 (세션 범위가)에 값을 설정 한<p : selectOneRadio> 내부의 사전 설정 값 <p:dialog>

  1. .

    <p:commandButton value="#{text['button.add']}" id="treeAdd"  
        styleClass="btn btn-primary" icon="fa fa-plus" 
        actionListener="#{eventLogDetails.showLogEntryClassificationDlg()}" 
        update=":logEntryClassificationDialogForm" 
        oncomplete="PF('dlgLogEntryClassification').show(); return false;" /> 
    

    자바

    public void showLogEntryClassificationDlg(){ 
        mode = MODE.ADD; 
        logEntryClassification = new LogEntryClassification(); 
        logEntryClassification.setLogEntryType(LogEntryType.LOG_ENTRY_CATEGORY); 
        //some other code 
    } 
    
  2. 대화 상자가 도시되어 있지만, 라디오 버튼의 값을 선택하지 않는다. 나는 뒷받침 빈에 getter를 체크하고 정확한 값을 리턴한다. (하지만 몇 번 호출된다.) 대화 상자의 아무 곳이나 (!)를 클릭하면 라디오 버튼이 선택됩니다.

    (거의) 전체 XHTML 파일 :

    <html xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:c="http://java.sun.com/jsp/jstl/core" 
        xmlns:f="http://java.sun.com/jsf/core" 
        xmlns:h="http://java.sun.com/jsf/html" 
        xmlns:p="http://primefaces.org/ui" 
        xmlns:ui="http://java.sun.com/jsf/facelets" 
        xmlns:o="http://omnifaces.org/ui"> 
    
        <ui:composition template="/layouts/default.xhtml"> 
        <ui:define name="title">#{text['eventLogDetail.title']}</ui:define> 
        <ui:param name="menu" value="EventLogMenu" /> 
    
        <ui:define name="body"> 
         <h:outputScript name="jsf.js" library="javax.faces" target="head" /> 
    
         <h:form id="eventLogDetailsForm"> 
    
          //some code 
    
          <div class="row"> 
           <div class="col-md-12"> 
            <div class="portlet"> 
             <h4 class="portlet-title"> 
              <u><i class="fa fa-sitemap"> </i> 
               #{text['eventLogDetail.heading.classification']}</u> 
             </h4> 
             <div class="portlet-body"> 
              <div class="row dt-rt"> 
               <div class="col-sm-12"> 
                <p:panel id="treeButtonPanel" styleClass="no-style-panel"> 
                 <div class="btn-group"> 
    
                  <p:commandButton value="#{text['button.add']}" id="treeAdd" 
                   styleClass="btn btn-primary" icon="fa fa-plus" 
                   actionListener="#{eventLogDetails.showLogEntryClassificationDlg}" 
                   update=":logEntryClassificationDialogForm, :logEntryClassificationDialogForm:logEntryTypeRadioPanel" 
                   oncomplete="PF('dlgLogEntryClassification').show(); return false;" /> 
    
                  //other commandButtons 
    
                 </div> 
                </p:panel> 
               </div> 
              </div> 
             </div> 
            </div> 
           </div> 
          </div> 
         </h:form> 
    
        <!-- dialogs --> 
         <p:dialog 
          header="#{text['logEntry.logEntryClassification.add.title']}" 
          widgetVar="dlgLogEntryClassification" appendTo="@(body)" modal="true" 
          dynamic="true" height="300" resizable="false" 
          styleClass="custom-popup-xs" id="logEntryClassificationDialog"> 
    
          <h:form id="logEntryClassificationDialogForm"> 
           <o:resourceInclude path="/common/messages.jsp" /> 
    
           <div class="row"> 
            <div class="col-sm-12 form-group"> 
            <p:panel id="logEntryTypeRadioPanel" styleClass="no-style-panel"> 
             <p:selectOneRadio id="logEntryTypeRadio" 
              value="#{eventLogDetails.logEntryClassification.logEntryType}" 
              converter="LogEntryTypeConverter"> 
              <f:selectItem itemLabel="Kategoria zdarzeń" 
               itemValue="LOG_ENTRY_CATEGORY" /> 
              <f:selectItem itemLabel="Rodzaj zdarzenia" 
               itemValue="LOG_ENTRY_TYPE" /> 
             </p:selectOneRadio> 
             </p:panel> 
            </div> 
           </div> 
    
          //some code 
    
          </h:form> 
         </p:dialog> 
    
        </ui:define> 
        </ui:composition> 
    </html> 
    

나는 <p:panel> 내부 <p:selectOneRadio>을 넣어 :logEntryClassificationDialogForm:logEntryTypeRadioPanel를 업데이트하려고했으나 결과는 동일했습니다.

EDIT : 나는 뭔가를 테스트했는데 아마도 어떤 종류의 프라임 스 페이스 버그 일 것입니다 : 첫 번째 항목이 선택되도록 설정할 때만 작동하지 않습니다. 처음에 항목을 하나 더 추가 한 후에 항목이 선택됩니다 (아래 그림 참조). 이견있는 사람?

<f:selectItem itemLabel="Rodzaj zdarzenia" itemValue="LOG_ENTRY_TYPE" /> 
<f:selectItem itemLabel="Kategoria zdarzeń" itemValue="LOG_ENTRY_CATEGORY" /> 
<f:selectItem itemLabel="Rodzaj zdarzenia" itemValue="LOG_ENTRY_TYPE" /> 

그것은 <h:selectOneRadio>와 함께 작동,하지만 난 <f:selectOneRadio>

답변

0

primefaces 버그 것 같다 사용해야합니다. <p:selectOneRadio>이 양식의 첫 번째 요소가 아닌 경우 작동합니다. 그러나 (탭 키를 사용하여) 그것에 집중할 때 첫 번째 요소가 아닐지라도 항목 선택이 손실됩니다. 탭을 다시 누르면 다시 선택됩니다. 지금은 <p:selectOneRadio> 전에 <p:focus for=someId>을 입력했습니다. someId이 입력됩니다. 텍스트 (<p:dialog>의 두 번째 요소)