我有以下情况。图片上传工作正常。但是当我点击“删除图像”按钮时,没有任何反应。实际上,调用了uploadEventFile方法(我从该方法获取错误消息 - 未选择任何文件),但从不调用deleteEventImage方法。我尝试添加一个测试按钮和一个测试方法,但同样的事情发生 - 当我单击测试按钮时,uploadEventFile方法启动,我收到错误消息,并且没有打印“DEBUG ::: TEST”。 如果我删除文件上传部分(h:inputFile和相应的h:commandButton),一切正常,“删除”和“测试”按钮。 我认为问题是每次单击页面上的任何按钮时都会调用文件上传方法,但我不知道如何修复它。
UploadForm.XHTML:
<h:form enctype="multipart/form-data">
...
<h:inputFile label="file" value="#{imageUploadBean.part}" required="true" requiredMessage="File not selected!"/>
<h:commandButton action="#{imageUploadBean.uploadEventFile}" value="Upload image">
<f:param name="eventId" value="#{eventBean.editingEvent.id}"/>
</h:commandButton>
<h:commandButton action="#{eventBean.deleteEventImage}" value="Delete image"/>
<h:commandButton action="#{eventBean.testAction}" value="Test"/>
...
</h:form>
ImageUploadBean.java:
public String uploadEventFile() {
System.out.println("DEBUG ::: UPLOAD");
/*...*/
return null;
}
EventBean.java:
public String deleteEventImage() {
System.out.println("DEBUG ::: DELETE");
/*...*/
return null;
}
public String testAction(){
System.out.println("DEBUG ::: TEST");
/*...*/
return null;
}
编辑:如果我将h:inputFile的“required”属性更改为false,问题就会消失。之后我唯一需要做的就是更改uploadEventFile方法,以便检查是否有指定的文件。但我想知道有没有办法在不改变“必需”属性的情况下解决问题?