仅在单击其他组件后才会触发 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 是一个服务器端动作,当某些东西被提交到服务器并且有效地具有与以前不同的值时,它将被触发。它是 NOT 告诉组件表现得像现代 ajax(jsf 1.1.7 及其 valuechangelistener 早于 ajax 时代)。表单值仅在您 'old' html 术语中使用表单提交时提交给服务器,例如按下提交按钮(或使用一些 javascript 来触发,就像您在旧的平原 html 天)。由于没有按下按钮或添加 javascript,没有任何内容被提交到服务器,valuechangelistener 将不会自发地做一些事情。
所以您看到的行为与它应该的完全一样。
我正在尝试在 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 是一个服务器端动作,当某些东西被提交到服务器并且有效地具有与以前不同的值时,它将被触发。它是 NOT 告诉组件表现得像现代 ajax(jsf 1.1.7 及其 valuechangelistener 早于 ajax 时代)。表单值仅在您 'old' html 术语中使用表单提交时提交给服务器,例如按下提交按钮(或使用一些 javascript 来触发,就像您在旧的平原 html 天)。由于没有按下按钮或添加 javascript,没有任何内容被提交到服务器,valuechangelistener 将不会自发地做一些事情。
所以您看到的行为与它应该的完全一样。