icefaces selectinputdate value

Я использую iceface selectInputDate. Код в файле.jspx выглядит следующим образом:

<ice:selectInputDate id="Dt" 
        value="#{actionsBean.MDate}"
        renderAsPopup="true" required="true"
        partialSubmit = "true"
        popupDateFormat="#{msgs.date_format}" 
        valueChangeListener = "#{actionsBean.mDateChangeListener}">
                          <f:converter converterId="MDateConverter" />      </ice:selectInputDate>

Проблема на самом деле такова: я хочу, чтобы значение на входе было пустой строкой по умолчанию. Я установил нулевое значение MDate, затем панель открывается, и после того, как пользователь (я в этом случае) сработал и закрыл панель, я снова установил нулевое значение в MDate. Но затем я открываю панель еще раз, когда последнее значение, выбранное с помощью календаря, было сохранено и автоматически заполнено. Как я могу решить эту проблему? Спасибо.

3 ответа

Решение

Когда вы закрываете панель, ваш компонент selectInputDate не перерисовывается на странице, а затем возвращает старое значение. Это может быть, например, если вы используете свойство rendered=true/false для отображения / скрытия родительской панели.

Для исправления используйте свойство visibled вместо rendered или используйте привязку для очистки значения в компоненте selectInputDate напрямую

Вероятно, это вызвано проблемой с всплывающей панелью icefaces, я пытался выполнить этот код каждый раз, когда всплывающее окно закрывается (скрыто):

public void clearSubmittedValues() {
    final FacesContext context = FacesContext.getCurrentInstance();
    final Application application = context.getApplication();
    final ViewHandler viewHandler = application.getViewHandler();
    final UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
    context.setViewRoot(viewRoot);
}

Это сбросит состояние всплывающего окна.

Вы можете заменить valueChangeListener с f:ajax слушатель и постарайтесь увидеть разницу.

<h:form id="dateForm">
....
<ice:selectInputDate id="Dt" 
    value="#{actionsBean.MDate}"
    renderAsPopup="true" required="true"
    partialSubmit = "true"
    popupDateFormat="#{msgs.date_format}">
        <f:converter converterId="MDateConverter" />      
        <f:ajax execute="@this" render="@form" 
              listener = "#{actionsBean.mDateChangeListener}">
</ice:selectInputDate>
...
</h:form>
Другие вопросы по тегам