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>