2013-05-08 2 views
4

하나의 마법사 탭에서 RadioButtons와 함께 PrimeFaces DataTable을 사용하고 있습니다. 라디오 버튼을 어떻게 든 설정할 수 있습니까 필요?필요한 라디오 버튼이있는 PrimeFaces DataTable

라디오 단추가있는 DataTable에서 하나의 옵션을 선택할 때까지 다음 마법사 탭으로 이동하면 안됩니다.

또는이 문제를 해결하는 방법을 알려주십시오. 어떤 답장을 보내 주셔서 감사합니다!

JSP 페이지

<p:tab id="test" title="Test"> 
    <p:panel header="Term page"> 
     <p:dataTable id="collection" value="#{register.dataList}" var="dl" rowKey="#{dl.c_id}" selection="#{register.selectedTerm}""> 
      <p:column selectionMode="single" style="width:2%" /> 
      <p:column> 
       #{dl.c_id} 
      </p:column> 
     </p:dataTable> 
    </p:panel> 
</p:tab> 

답변

1

당신은 FacesMessage를 이전/다음 버튼을 클릭 할 때 트리거 조건에 추가됩니다 <p:wizard> 태그의 flowListener에서 데이터 선택을 확인 할 수 있습니다

public String onFlowProcess(FlowEvent event) { 
    String current = event.getOldStep(); 
    String next = event.getNewStep(); 
    boolean proceed = true; 
    if(current.equals("first") && next.equals("second") && (selectedData == null)) { 
     //proceed only when data was selected and user is moving to the next step 
     FacesMessage facesMessage = new FacesMessage("You need to make a selection in a datatable to proceed!"); 
     FacesContext.getCurrentInstance().addMessage("form:selection", facesMessage); 
     proceed = false; 
    } 
    return proceed ? next : current; 
} 

전체 예입니다 아래에 제공됩니다.

뷰 :

<h:form id="form"> 
    <p:wizard widgetVar="wiz" flowListener="#{q16439053Bean.onFlowProcess}"> 
     <p:tab id="first" title="First"> 
      <p:message for="selection"/> 
      <p:panel id="selection" header="Term page"> 
       <p:dataTable id="collection" value="#{q16439053Bean.list}" var="data" rowKey="#{data.name}" selection="#{q16439053Bean.selectedData}"> 
        <p:column selectionMode="single" style="width:2%" /> 
        <p:column> 
         #{data.name} 
        </p:column> 
       </p:dataTable> 
      </p:panel> 
     </p:tab> 
     <p:tab id="second" title="Second"> 
      Done! 
     </p:tab> 
    </p:wizard> 
</h:form> 

빈 (bean) :

@ManagedBean 
@ViewScoped 
public class Q16439053Bean implements Serializable { 

    private List<Data> list; 
    private Data selectedData; 

    public List<Data> getList() { 
     return list; 
    } 

    public void setList(List<Data> list) { 
     this.list = list; 
    } 

    public Data getSelectedData() { 
     return selectedData; 
    } 

    public void setSelectedData(Data selectedData) { 
     this.selectedData = selectedData; 
    } 

    public class Data { 

     private String name; 
     private String value; 

     public Data() { 
     } 

     public Data(String name, String value) { 
      this.name = name; 
      this.value = value; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getValue() { 
      return value; 
     } 

     public void setValue(String value) { 
      this.value = value; 
     } 

    } 

    public Q16439053Bean() { 
     list = new ArrayList<Data>(); 
     Data d; 
     d = new Data("name", "value"); 
     list.add(d); 
     d = new Data("name1", "value1"); 
     list.add(d); 
     d = new Data("name2", "value2"); 
     list.add(d); 
     d = new Data("name3", "value3"); 
     list.add(d); 
    } 

    public String onFlowProcess(FlowEvent event) { 
     String current = event.getOldStep(); 
     String next = event.getNewStep(); 
     boolean proceed = true; 
     if(current.equals("first") && next.equals("second") && (selectedData == null)) { 
      FacesMessage facesMessage = new FacesMessage("You need to make a selection in a datatable to proceed!"); 
      FacesContext.getCurrentInstance().addMessage("form:selection", facesMessage); 
      proceed = false; 
     } 
     return proceed ? next : current; 
    } 

} 
+0

가, 몬시뇰을 주셔서 감사합니다! 정확히 내가 찾고 있던 것이고 완벽하게 작동합니다! 다른 질문을 할 수 있습니다. 마법사에 captcha를 삽입하는 방법을 알고 있습니까? [내 게시 된 질문] (http://stackoverflow.com/questions/16419220/primefaces-wizard-with-captcha) – PrincAm