エクスポートできるようにするために、いくつかの「基準」に準拠する必要があるいくつかのアイテムからエクスポート ファイルを生成しようとしています。問題は、ユーザーは (チェックボックスを使用して) いくつかの項目を選択し、ICEFaces のOutputResourceをクリックして、選択した項目を (できればすべて) エクスポートする必要があるということです。
このプロセスに関係する部分は次のとおりです。
XHTML の OutputResource:
<ice:outputResource rendered="#{not myBackingBean.emptySelection}" resource="#{myBackingBean.excelResource}" label="export to Excel" shared="false" target="_self" />
リソースを保持するバッキング Bean:
@ManagedBean(name = "myBackingBean")
@ViewScoped
@WindowDisposed
public class MyBackingBean implements Serializable
{
...
private ExcelResource resource;
...
}
そして最後に、実際のリソース:
...
import com.icesoft.faces.context.Resource;
...
public class ExcelResource implements Resource
{
...
@Override
public InputStream open() throws IOException
{
//do some selection here. If there is no valid ticket to export then
//this method will return null, otherwise it will return an InputStream
//and everything will work properly
if (everythingOk)
{
return new ByteArrayInputStream(...);
}
//hopefully, it won't get to this point
return null;
}
ご覧のとおり、インターフェイスを実装し、「その場で」Excel エクスポートを作成するメソッドをcom.icesoft.faces.context.Resource
オーバーライドしています。open()
ここでもう一度言いたいのは、最初に選択したアイテムの一部をフィルタリングし、アイテムが残っていない場合はエラー ページに移動することです。これがh:commandButton
または の場合は、アクションice:commandLink
プロパティを使用して実行しますが、これは であるため、ここでは実行できません。これに対する回避策はありますか? ユーザーは何かを選択することができますが (すぐに がレンダリングされます)、エクスポートする前に選択をフィルタリングする必要があるため、これを行うには render プロパティを使用するだけでは不十分であることに注意してください。ice:outputResource
ice:outputResource
最後になりましたが、これを行うために Websphere 8 と ICEFaces 3 を使用しています。
前もって感謝します!