ajax rerender で deploy-java ボタンを表示するのに問題があります
<h:form id="deployJavaForm" rendered="#{myBean.shouldRender}">
<h:outputScript library="js" name="http://java.com/js/deployJava.js" target="head" />
<script type="text/javascript">
deployJava.createWebStartLaunchButton('blah.jnlp', '1.7.0');
</script>
</h:form>
いつ
myBean.shouldRender == true
フォームが更新され、(白いページに) 表示されているのは deployJava-button だけであり、リクエストはハングしたままです。最初のリクエストで shouldRender が true の場合、ページとボタンは正しく表示されます。役立つ場合に備えて、プライムフェイスを使用しています。
私がやりたいのは、ボタンが ajax 再レンダリングの一部であるか、完全な初期リクエストであるかに関係なく、ボタンを正しく表示することです。
更新:宿題をして、問題を再現する最小限の例を作成しました。スクリプト宣言が頭にあるか本体にあるかに関係なく、同じ問題が発生しているようです(resources/jsにdeployJava.jsのコピーがあります)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<!-- <script type="text/javascript" src="http://java.com/js/deployJava.js" />-->
</h:head>
<h:body>
<h:outputScript library="js" name="deployJava.js" target="head" />
<h:form id="djForm">
<script type="text/javascript">
deployJava.createWebStartLaunchButton(
'test.jnlp', '1.7.0');
</script>
<p:commandButton value="update" update="djForm" />
</h:form>
</h:body>
</html>
編集:(specialgems)以下のテストでは、以前に観察されたのと同じ問題が発生します。
<h:outputScript>
deployJava.createWebStartLaunchButton(
'test.jnlp', '1.7.0');
</h:outputScript>
編集:写真を追加しました
更新ボタンをクリックすると、 deployJava ボタンのみがレンダリングされ、ページが読み込まれます
編集(ダニエル):成功時と完了時の両方で同じ動作が得られます:(
<h:form id="djForm">
<h:outputScript>
function abcefg() {
deployJava.createWebStartLaunchButton('test.jnlp', '1.7.0');
}
</h:outputScript>
<p:commandButton value="update" update="djForm" onsuccess="abcefg()" />
</h:form>