私が間違っているのかわかりません。追加した:
<h:form id="media">
<a4j:mediaOutput id="aud" element="object" cacheable="false" session="true"
title="canYouSeeMe"
width="300"
createContent="#{mediaPlay.play}"
value="#{sdh:storeDataAndGetKey(mediaPlay.selectedFileData)}"
mimeType="audio/x-mpeg" />
</h:form>
Firefox で最初にページを開いたときに、QuickTime プラグインをインストールする必要があるというメッセージが表示されました。しかし、他には何もありません。FF または IE でオーディオを再生するためのリンクまたは方法が表示されません。ここのチュートリアルから取得した再帰的な storeDataAndGetKey メソッド: https://community.jboss.org/wiki/A4jmediaOutputAndLargeObjectsAsValue (大きなオブジェクトの場合)。
private static DataHolder getGraphDataHolder() {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext externalContext = fc.getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
Object session = externalContext.getSession(true);
DataHolder holder;
synchronized (session) {
holder = (DataHolder) sessionMap.get(DATA_HOLDER_ATTRIBUTE_NAME);
if(holder == null){
holder = new DataHolder();
sessionMap.put(DATA_HOLDER_ATTRIBUTE_NAME, holder);
}
}
return holder;
}
public static Object getDataByKey(Object key) {
DataHolder holder = getGraphDataHolder();
return holder.getDataByKey(key);
}
mediaPlay.play:
public synchronized void play (OutputStream stream, Object object) throws IOException {
Object restoredData = SessionDataHelper.getDataByKey(object);
byte[] soundData = ((Data) restoredData).getFileData();
stream.write(soundData);
}
ページ ソースにはコンポーネントが表示されますが、レンダリングされたページには表示されません。何を見ればいいのかもわからない。
ページの読み込み後に生のHTML を追加するための編集
<form id="j_id18:media" name="j_id18:media" method="post" action="/home.seam" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_id18:media" value="j_id18:media" />
<object id="j_id18:media:aud" data="/a4j/s/3_3_1.GAorg.ajax4jsf.resource.UserResource/n/s/-1007594989/DATA/eAFlUs9rE0EUfl0stv4Aa6ziQai1KIiZmGS3UWpBUFEhsWJsQT297L4ks8zurDOz6WrRmxcFL169edWL!gVeC176NwgiIoggXp2dFKV1DgNv-N73fe978!Y7TGoFZ6UaMIyx8GPdZ4q0zFVIbFWTurNdLKwqfhUNQnkqwTcP9rThYKgIDV2RqaHUGDjcjnGENYHpoLbSiyk0S23YS0XGLedDeAoTbZhKZMT7nKLtenKEIidXFJn1crqkKFgfQ9IslEkmU8vNusYK3ZAiItXFEal7mx-WX73-1PHAa8N0KFDrW5jQTg9do3g6sB72adsTOQ4DR8cuuax1SXEU!DH2BC0VWSl!xkoynafOgCCjGQl2FwcdMkMZXSsyO4nmMnU5AEwcACgUHB-bttDduPe1zReff!svPYer!MX9Y3rz7Hn35!2tSyWidHCyXEbck9pJ7-a7mWSi9-PYr!0fZzqldhnc1PoszJzaSCjieFvgI5bZ6wlArqDywA3LypXYDF0c77bWvnw9sXHdCdo5PANHSl-MS7aSmyw3FkiYGDjknl3veJ1ZVqwvgl8byoRYMTSJmLvcWDzXDOZ2!ITl-f!czNt4DSy0ggZSE!1qENYvVP3zF6mKjSCq9lutRp2CZt0Pmn8A3l!elQ__" title="canYouSeeMe" width="300"></object><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id2" />
</form>
これは Seam 2.2、RichFaces 3.3.3 です。JBoss 5.1 での実行