![](/img/trans.png)
[英]Disable `<h:commandButton>` after clicked, but action should be fired
[英]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.