我尝试将RichInputFile与viewScopeBean绑定没有成功。
这是我的代码:
jsff:
<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>
bean:
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;
}
}
[当我在上载文件元素上选择一个文件时,将选择该文件,但不会触发ValueChangeEvent,也不会调用onFileUploadValueChangeListener。 PPR发生,并且RichInputFile inputFile值仍为null,在屏幕上显示“未选择文件”。 (绑定成功)
我应该如何纠正在af:inputFile上触发valueChangeEvent的问题?
我找到了答案。
尽管我仍然执行此操作,因为单击上载按钮时未激活valueChangerListener事件。我的代码看起来完全一样,有人知道我可以做些不同的事情吗?