У меня есть два поля на моем сайте.Входной текст и selectManyCheckbox.Во входном тексте пользователь пишет дату вроде 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>
А вот код управляемогоBean:
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();
}
Как видите, понедельник (Montag) предварительно проверен.Если я введу 30.03.2014 в текст ввода, метка воскресенья изменится на «Тест».Но проверенный пункт не меняется с понедельника по воскресенье.
Я надеюсь, что вы можете помочь мне с этим.:)
Бенджамин