只有在单击其他组件后才发射ValueChangeEvents



我正在尝试在JSF(1.1.7)和Apache Trinidad(1.0.11)中使用输入文件。我为其定义了一个更改事件,但是当我更改文件选择时,该事件并没有被触发,但是当我单击表单的另一个组件时。

这是JSP代码:

    <trh:body>
        <tr:panelPage>
            <tr:form usesUpload="true" id="myForm"> 
                <tr:inputFile columns="80" id="archivo" 
                    valueChangeListener="#{myBean.changeInputFile}" 
                    immediate="true">
                </tr:inputFile>
                <tr:commandButton text="Begin"/>
            </tr:form>
        </tr:panelPage>
    </trh:body>

这是bean的相关部分:

public void changeInputFile(ValueChangeEvent event) {
    UploadedFile f = (UploadedFile)event.getNewValue();
}

当我单击"开始"按钮时,代码仅进入mybean.changeinputfile方法(之前已更改文件选择)。我希望它在更改InputFile组件中所选文件时输入mybean.changeinputfile。

任何想法为什么会发生这种情况?

您的外汇是错误的。ValueChangeListener是一项服务器端操作,当某物提交给服务器时会发射,并且有效地具有与以前不同的值。它是不是告诉组件像现代Ajax一样行为(JSF 1.1.7及其valuechangelistener早于Ajax时代)。表单值仅在"旧" html期限中使用表单提交按钮(或使用一些JavaScript)触发像您在旧的普通HTML天中一样触发的form form form form form form form form form form form form form form forme for for for form form forme。而且,由于如果不按按钮或添加的JavaScript,则没有提交给服务器的任何内容,valuechangelistener不会自发地做某事。

因此,您看到的行为完全是应有的。

相关内容

  • 没有找到相关文章

最新更新