XULコンポーネントセットは以下のコモンダイアログをサポートして、いくつかのコモンタスクを簡単にします。
org.zkoss.zul.Messagebox クラスはメッセージボックスを表示するユーティリティのセットを提供します。代表的な動作として、エラーが発生した時にユーザーに知らせるか、又は決定をうながすのに使用されます。
if (Messagebox.show("Remove this file?", "Remove?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES) { ...//remove the file
}
ユーザーにエラーを知らせるのは一般的ですので、alertと呼ばれるグローバルファンクションがzscriptに追加されました。
alert("Wrong"); Messagebox.show("Wrong");
Messageboxはモーダルウィンドウです。つまり、イベントリスナの中でのみ実行可能という同様の規制を共有しています。
このため、以下のコードは実行されません。詳しくはModal Windows and Event Listeners セクションを参照してください。
<window title="Messagebox not allowed in paging loading"> <zscript> //failed since show cannot be called in paging loading if (Messagebox.show("Redirect?", "Redirect?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES) Executions.sendRedirect("another.zul"); </zscript> </window>
org.zkoss.zul.Fileuploadクラスはクライアントからサーバーへファイルをアップロードするときに使うユーティリティセットを提供します。
getメソッドが呼び出されるとファイルアップロードダイアログはブラウザで表示され、アップロードするファイルを指定することをユーザーに確認します。
ファイルがアップロードされるまで、又は取り消しボタンが押されるまで応答はしません。
<window title="Fileupload Demo" border="normal"> <image id="image"/> <button label="Upload"> <attribute name="onClick">{ Object media = Fileupload.get(); if (media instanceof org.zkoss.image.Image) image.setContent(media); else if (media != null) Messagebox.show("Not an image: "+media, "Error", Messagebox.OK, Messagebox.ERROR); }</attribute> </button> </window>
同時に多数のファイルをアップロードすることを可能にする場合、
以下のようにファイルアップロード可能最大個数を指定できます。
<window title="fileupload demo" border="normal"> <button label="Upload"> <attribute name="onClick"><![CDATA[{ Object media = Fileupload.get(5); if (media != null) for (int j = 0; j < media.length; ++j) { if (media[j] instanceof org.zkoss.image.Image) { Image image = new Image(); image.setContent(media[j]); image.setParent(pics); } else if (media[j] != null) { Messagebox.show("Not an image: "+media[j], "Error", Messagebox.OK, Messagebox.ERROR); } } }]]></attribute> </button> <vbox id="pics"/> </window>
fileuploadコンポーネントはモーダルダイアログではありません。むしろ、一つのコンポーネントです。
他のコンポーネントとともにインラインで配置されます。
【メモ】:ダイアログをアップロードするファイルを開く静的なgetメソッドを提供するのに加えて、
org.zkoss.zul.Fkileupload自身がコンポーネントです。いわゆるfileuploadコンポーネントです。
例えば、
<image id="img"/> Upload your hot shot: <fileupload onUpload="img.setContent(event.media)"/>
Upload ボタンが押されると、onUploadイベントがorg.zkoss.zk.ui.event.UploadEvent イベントのインスタンスとともに送信されます。getMedia又はgetMediasメソッドを使用してアップロードファイルのコンテンツを取得することができます。
getMediaとgetMediasはn ullを返して、ファイルが指定されていないけれども、アップロードボタンが押されたことを示します。
org.zkoss.zul.Filedownloadクラスはサーバーからクライアントにファイルをダウンロードするときに使うユーティリティセットを提供します。
ブラウザウィンドウの中でファイルを表示するiframeコンポーネントとは違い、saveメソッドの一つが呼び出される時、ファイルダウンロードダイアログはブラウザで表示されます。
ユーザーはそれを利用してファイルを保存するディレクトリーを指定します。
<button label="Download download.html"> <attribute name="onClick">{ java.io.InputStream is = desktop.getWebApp().getResourceAsStream("/test/download.html"); if (is != null) Filedownload.save(is, "text/html", "download.html"); else alert("/test/download.html not found"); }</attribute> </button>