データを保存するための jsf フォームがあります。このフォームには、アップロードするファイルごとに、primefaces の fileuploaded コンポーネントがあり、特定の説明があります。私はこの操作にイベントリスナーを使用しています。私の要件は、説明を追加せずにファイルをアップロードするときに、「説明を追加してください」という検証メッセージを表示する必要があることをユーザーに制限したいということですが、このプロセスは前に行う必要がありますフォーム全体を送信します。
ソースコード:
<h:panelGrid id="ff" columns="2" cellpadding="8">
<p:outputLabel for="file" value="Description:" styleClass="label"
style="font-weight:bold" />
<p:inputTextarea rows="5" cols="30" id="file"
value="#{manageProject.desc}" required="true"
requiredMessage="Please enter the File desccription" styleClass="input"
counterTemplate="{0} characters remaining." autoResize="false" >
<p:ajax listener="#{manageProject.handlefiles()}"></p:ajax>
</p:inputTextarea>
</h:panelGrid>
<p:fileUpload
fileUploadListener="#{manageProject.handleFileUpload}"
mode="advanced" dragDropSupport="false" multiple="false" update="ff"
sizeLimit="5242880" fileLimit="3" invalidSizeMessage="maximum file size should be 5mb"
>
</p:fileUpload>
Bean クラス:
public void handleFileUpload(FileUploadEvent event) {
docs=new Docs();
try {
byte[] data = new byte[(int) event.getFile().getSize()
];
inputStreams = event.getFile().getInputstream();
inputStreams.read(data);
docs.setImage(data);
docs.setName(event.getFile().getFileName());
System.out.println("desc="+desc);
docs.setDesc(desc);
docses.add(docs);
FacesMessage msg = new FacesMessage(event.getFile().getFileName()+" "+"has been uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}