每当按下某个按钮时,都会调用JSF inputFile操作

时间:2014-10-29 19:57:18

标签: java xhtml jsf-2.2

我有以下情况。图片上传工作正常。但是当我点击“删除图像”按钮时,没有任何反应。实际上,调用了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方法,以便检查是否有指定的文件。但我想知道有没有办法在不改变“必需”属性的情况下解决问题?

0 个答案:

没有答案