2

我使用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。但是,当我通过日历选择的最后一个值被保存并自动填写时,我再次打开面板。我该如何解决这个问题?谢谢。

4

3 回答 3

1

这可能是由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);
}

这将重置弹出窗口的状态。

于 2013-09-26T16:27:59.770 回答
1

当您关闭面板时,您的 selectInputDate 组件不会在页面上重绘,然后返回旧值。例如,如果您使用“rendered=true/false”属性来显示/隐藏父面板,则可能是这样。

对于修复,使用 'visibled' 属性而不是 'rendered' 或直接在 selectInputDate 组件中使用绑定来清除值

于 2013-09-30T15:29:10.010 回答
0

您实际上可以valueChangeListenerf: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>
于 2013-09-25T04:27:40.963 回答