2011-08-24 4 views
0

에 selectManyCheckbox 나는 내 웹 사이트에있는 두 개의 필드가 있습니다. 입력 텍스트 및 selectManyCheckbox. inputtext에서 사용자는 30.03.2014와 같은 날짜를 씁니다. selectManyCheckbox에는 모든 요일 (월요일, 화요일 ...)이 있습니다. 사용자가 날짜를 쓰는 경우 selectManyCheckbox에서이 날짜의 요일을 확인합니다. 예 : 30.03.2014는 일요일에 확인해야합니다. 여기 변경 : 이벤트

내 JSP의 일부 코드 :

<h:inputText value="#{course.startTime}" onblur="submit()" valueChangeListener="#{course.intervalDayEvent}" immediate="true"> 
    <f:converter converterId="dateConverter" /> 
</h:inputText> 

<h:selectManyCheckbox layout="pageDirection" value="#{course.days}"> 
    <f:selectItems value="#{course.availableDays}" /> 
</h:selectManyCheckbox> 

그리고 여기 ManagedBean은 일부 코드입니다 : 당신이 월요일을 볼 수 있듯이

private List<String> days = new ArrayList<String>(); 
private List<SelectItem> availableDays = new ArrayList<SelectItem>(); 

@PostConstruct 
public void init() { 

    availableDays.add(new SelectItem("Montag", "Montag")); 
    availableDays.add(new SelectItem("Dienstag", "Dienstag")); 
    availableDays.add(new SelectItem("Mittwoch", "Mittwoch")); 
    availableDays.add(new SelectItem("Donnerstag", "Donnerstag")); 
    availableDays.add(new SelectItem("Freitag", "Freitag")); 
    availableDays.add(new SelectItem("Samstag", "Samstag")); 
    availableDays.add(new SelectItem("Sonntag", "Sonntag")); 
    days.add("Montag"); 

} 

public void intervalDayEvent(ValueChangeEvent event) { 

    try { 
     Date date = (Date) event.getNewValue(); 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(date); 
     int day = cal.get(Calendar.DAY_OF_WEEK); 

     days.clear(); 

     switch (day) { 
     case Calendar.MONDAY: 
      days.add("Montag"); 
      break; 
     case Calendar.TUESDAY: 
      days.add("Dienstag"); 
      break; 
     case Calendar.WEDNESDAY: 
      days.add("Mittwoch"); 
      break; 
     case Calendar.THURSDAY: 
      days.add("Donnerstag"); 
      break; 
     case Calendar.FRIDAY: 
      days.add("Freitag"); 
      break; 
     case Calendar.SATURDAY: 
      days.add("Samstag"); 
      break; 
     case Calendar.SUNDAY: 
      availableDays.get(6).setLabel("Test"); 
      days.add("Sonntag"); 
      break; 
     } 

    } catch (Exception ex) { 
     log.warn(ex.getMessage()); 
    } 

    FacesContext context = FacesContext.getCurrentInstance(); 
    context.renderResponse(); 
} 

(몬태그) prechecked된다. 입력 텍스트에 30.03.2014를 입력하면 일요일의 레이블이 "테스트"로 변경됩니다. 그러나 체크 된 항목은 월요일에서 일요일로 바뀌지 않습니다.

난 당신이 좀 도와 수 있기를 바랍니다. :)

벤자민

답변

1

내가 입력 텍스트와 selectManyCheckbox이 같은 형태에 가정? JS 함수 submit()이 수행하는 것을 볼 수는 없지만 전체 양식을 제출하는 것입니다. 어떤 일이 일어나고은 intervalDayEvent는하지만 양식이 selectManyCheckbox 그런 다음 백업 빈에서의 구성 요소의 값을 설정하는 것입니다 제출 되었기 때문에 트리거되고있다.

는 2 개 개의 다른 형태의 이러한 구성 요소를하거나에만 입력 텍스트 그 값의 변화가 아니라 전체 양식을 설정하는 몇 가지 아약스 컨트롤을 사용하기 위해 필요한이 주위를 얻으려면. 이 예제는 RichFaces와 함께 아래에 표시 할 수 있지만 다른 JSF ajax 라이브러리와 함께 사용할 수 있습니다.

+0

흠 작동하지 않습니다. :(그것은 selectManyCheckbox이있어 사용자가 하나 개 이상의 항목을 확인할 수 있습니다.이 목록 될 필요가 그래서.? 날짜가있는 PreCheck를가 제안이다. 어쨌든, 당신의 anwser 주셔서 감사합니다! – bedit

+0

내가 놓친 죄송합니다. 나는 이유를 참조 이 방법을 일어나고 그것이 그에 따라 내 대답을 수정할 것입니다 – Ross

+0

예, inputTextfields 내가하는 Liferay 5 환경에서 일하고 있기 때문에 내가 포틀릿 다리와 JSF 1.2을 사용해야합니다. 같은 형태로하고 나는 행복 해요 그것의 작동. 지금까지 작동하도록 a4j를 얻을 수 없습니다. 그래서 지금 두 양식을 사용합니다. 감사합니다 !! :) – bedit