从 javascript onload 事件执行 managebean 方法
2022-09-01 13:54:59
如何从 javascript 发出更新 a 的 ajax 请求?我目前正在加载初始数据,但这会显着延迟初始页面加载。<h:dataTable>
@Postconstruct
我正在考虑使用HTML标签的事件来触发请求并更新数据表。onload
<body>
如何从 javascript 发出更新 a 的 ajax 请求?我目前正在加载初始数据,但这会显着延迟初始页面加载。<h:dataTable>
@Postconstruct
我正在考虑使用HTML标签的事件来触发请求并更新数据表。onload
<body>
从理论上讲,以下人员应该这样做。
<h:body>
<f:ajax event="load" listener="#{bean.onload}" />
</h:body>
跟
public void onload(AjaxBehaviourEvent event) {
// ...
}
但是,由于某种原因,不支持此操作。我曾经发布过关于这个问题的问题报告。
以下内容有效,但它本质上是一个黑客。
<h:head>
<title>JSF 2.0 onload hack</title>
<script>
window.onload = function() {
document.getElementById('hidden:link').onclick();
}
</script>
</h:head>
<h:body>
<h:form id="hidden" style="display:none">
<h:commandLink id="link">
<f:ajax event="click" listener="#{bean.onload}" />
</h:commandLink>
</h:form>
</h:body>
如果您碰巧使用PrimeFaces,则可以使用其<p:remoteCommand>
并将autoRun
设置为true
。
<h:body>
<h:form>
<p:remoteCommand name="onload" action="#{bean.onload}" autoRun="true" />
</h:form>
</h:body>
或者,如果您使用的是 OmniFaces,则可以使用它<o:commandScript>
<h:body>
<h:form>
<o:commandScript name="onload" action="#{bean.onload}" />
<h:outputScript target="body">onload()</h:outputScript>
</h:form>
</h:body>
在 的末尾呈现 .即将推出的OmniFaces 2.2将通过新的自动运行
属性来消除这种需求。<h:outputScript target="body">
<script>
<body>
<h:body>
<h:form>
<o:commandScript name="onload" action="#{bean.onload}" autorun="true" />
</h:form>
</h:body>
在jsf2.0中,您可以在几乎任何其他jsf标签中使用f:ajax标签,例如
<h:selectOneRadio id="myComponent" value="#{someBean.inputMethod}">
<f:selectItem itemValue="#{someBean.A}" itemLabel="A" />
<f:selectItem itemValue="#{someBean.B}" itemLabel="B" />
<f:ajax event="click" action=#{someBean.someMethod} />
</h:selectOneRadio>
在此示例中,someMethod 在 javasript onClick 事件中被执行,用于“myComponent”selectOneRadio
不确定这是否是你所追求的....