2

環境:RichFaces3.3.3ファイナル; フェイスレット1.1.15; JBoss5.5lotbridge2.1.0ファイナル; JBossAS5.1および組み込みのMojarraJSF1.2にバンドルされているGateInPortal3.1.0。

いくつかのコードスニペット:filepage.xhtml:

 <a4j:form id="fileForm">
      <rich:fileUpload fileUploadListener="#{testBean.fileListener}"
        acceptedTypes="txt" maxFilesQuantity="1" />
      <!-- etc. -->
 </a4j:form>

TestBean.java:

 public void fileListener(UploadEvent e) throws IOException {
    System.out.println("Entering the fileListener Method");
    UploadItem item = e.getUploadItem();
    File file = item.getFile();
            // etc...
}

スタンドアロンWebアプリとしてデプロイした場合の結果は期待どおりであり、コンポーネントが表示され、ユーザーが[追加]をクリックし、ファイルを参照して選択し、ファイルがリストに追加され、ユーザーが[アップロード]ボタンをクリックすると、[fileListenerメソッドの入力]行が表示されます。コンソール上で(他のことが起こっているのと一緒に)。

GateInでの結果:リスナーのsysoutおよびその他のコードを除く上記のすべて。このメソッドは呼び出されていないようです。

私はすでにJBossコミュニティフォーラムといくつかのJIRAを読んで数日を過ごしましたが、私の問題は新しいものではないようです。私は見つけたそれぞれの提案を試しましたが、どれもうまくいきませんでした。また、これらの投稿はいずれも2010年1月より最近のものではなく、それ以降、私のアプリの構成要素はすべて新しいバージョンになっています。

あなたの援助、または最新かつ詳細な情報へのポインタは大歓迎です。

4

2 に答える 2

0

私はこれを自分の質問に対する答えとは考えていませんが、コメントするには大きすぎるので、これを編集として追加して回答に影響を与えたくありません。とにかく、同僚からの提案で、私はある種の回避策を持っています。

質問で述べたように、ファイルのアップロードはスタンドアロンのWebアプリ内で完全に機能するので、ポートレットをそのWebアプリではなく、単にそのWebアプリを指すようにしてみませんか。

portlet.xmlで、<portlet-class>javax.portlet.faces.GenericFacesPortletから作成したJavaポートレット(mypackage.DispatchPortletなど)に変更します。また、<init-param>withdefaultViewIdを削除します。

DispatchPortletは、他のすべてのものと同じプロジェクトにあり、エントリのHelloWorldポートレットよりもわずかに複雑です。doViewをオーバーライドして、次の4つの小さな行を追加するだけです。

 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println(HTML_CONTENT);
 out.close();

HTML_CONTENTは、次のような静的な文字列変数です。

 <iframe src="url to your app" height="400" width="600">no iframes</iframe>

必要なのは文字通りそれだけです。なぜポートレットブリッジがわざわざあるのか不思議に思う人もいるかもしれません。すべてが機能するだけでなく、GateInがCSSに対して行うファンキーな機能の一部が実行されないため、見た目も少し良くなります。

しかし、私はこれをゲットーの解決策と考えており、ファイルのアップロードが機能する、これを100%ポートレットにする正しい方法を本当に探しています。

于 2011-05-26T18:08:04.293 に答える
0

Red Hat EPPのドキュメントで、ファイルのアップロードがサポートされていないことがわかりました。おそらく、次のバージョンの準備ができたら(JSF 2、Richfaces 4、およびBridge 3をサポートするため)、それは可能ですが、今のところ、回避策が唯一の選択肢です。

于 2011-07-16T20:30:17.747 に答える