簡體   English   中英

僅在單擊其他組件后才觸發ValueChangeEvents

[英]ValueChangeEvents being fired only after other components are clicked

我正在嘗試在JSF(1.1.7)和Apache Trinidad(1.0.11)中使用InputFile。 我為其定義了一個更改事件,但是當我更改文件選擇但單擊表單的另一個組件時,不會觸發該事件。

這是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早在阿賈克斯時代)。 僅當您以“舊” html術語使用表單提交(例如按下提交按鈕)時才將表單值提交到服務器(或者像使用舊的純HTML天一樣使用某些javascript來觸發表單)。 而且由於沒有按下按鈕或添加的javascript,沒有任何內容提交到服務器,因此valuechangelistener不會自發執行任何操作。

因此,您所看到的行為完全正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM