我尝试将 RichInputFile 与 viewScopeBean 绑定失败。
这是我的代码:
杰夫:
<af:panelGroupLayout id="pgl1" layout="horizontal">
<af:inputFile label="Upload File" id="if1"
binding="#{viewScope.userBean.inputFile}"
valueChangeListener="#{viewScope.userBean.onFileUploadValueChangeListener}"
autoSubmit="true"/>
<af:spacer width="10" height="10" id="s7"/>
<af:commandButton text="Upload" id="cb1"
disabled="#{viewScope.userBean.inputFile.value == null ? true : false}"
partialTriggers="if1"
actionListener="#{viewScope.userBean.onUploadFile}"/>
</af:panelGroupLayout>
Run Code Online (Sandbox Code Playgroud)
豆 :
public class UserBean{
private RichInputFile inputFile;
private UploadedFile file;
private String fileContent;
private String fileName;
private InputStream inputstream;
public UserBean() {
super();
}
public void onFileUploadValueChangeListener(ValueChangeEvent valueChangeEvent) {
resetValue();
file = (UploadedFile)valueChangeEvent.getNewValue();
try {
inputstream = file.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onUploadFile(ActionEvent actionEvent) {
if (file != null && inputstream != null) {
fileName = file.getFilename();
StringWriter writer = new StringWriter();
}
if (inputFile != null) {
inputFile.resetValue();
inputFile.setValid(true);
}
}
public void resetValue() {
if (fileName != null)
fileName = null;
if (fileContent != null)
fileContent = null;
if (inputstream != null)
inputstream = null;
}
public void setInputFile(RichInputFile inputFile) {
this.inputFile = inputFile;
}
public RichInputFile getInputFile() {
return inputFile;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public UploadedFile getFile() {
return file;
}
public String getFileContent() {
return fileContent;
}
public String getFileName() {
return fileName;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在上传文件元素上选择文件时,会选择该文件,但不会触发 ValueChangeEvent,并且不会调用 onFileUploadValueChangeListener。发生PPR,RichInputFile inputFile 值仍然为空,屏幕上显示“No file selected”。(绑定成功)
我应该纠正什么才能在 af:inputFile 上触发 valueChangeEvent ?
我找到了答案。
要触发 af:inputFile valueChangeEvent,必须将其包含在 af:form useUpload="true" 标签中:
<af:panelGroupLayout id="pgl1" layout="horizontal">
<af:form usesUpload="true" id="f1">
<af:inputFile label="Upload File" id="if1"
binding="#{viewScope.userBean.inputFile}"
valueChangeListener="#{viewScope.userBean.onFileUploadValueChangeListener}"
autoSubmit="true"/>
<af:spacer width="10" height="10" id="s7"/>
<af:commandButton text="Upload" id="cb1"
disabled="#{viewScope.userBean.inputFile.value == null ? true : false}"
partialTriggers="if1"
actionListener="#{viewScope.userBean.onUploadFile}"/>
</af:form>
</af:panelGroupLayout>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3827 次 |
| 最近记录: |