我无法在 ajax 重新渲染上显示 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 按钮,请求被挂起。如果在初始请求中 shouldRender 为 true,则页面和按钮会正确显示。我正在使用 primefaces 以防万一。
我想要做的是让按钮正确显示,无论它是 ajax 重新呈现的一部分还是完整的初始请求。
更新:我做了功课并创建了一个仍然重现问题的最小示例。无论脚本声明是在头部还是在正文中,我似乎仍然遇到同样的问题(我在资源/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>