我想在服务器端向h:form添加一个javascript函数,以便稍后在客户端调用它。
我用
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite">
并试过“onload”,就像这样
<h:form onload="this.myfunc=function(){alert('Hello world');}" ...
但根据文档,h:form没有“onload”。
目的是拥有一个包含h:form的复合,以及一个使用此复合的页面,并包含一些javascript代码,用于准备和触发复合上的ajax调用。页面应该只调用myfunc,并且不需要知道复合对调用的作用,因此复合可能会更改而无需更改页面。
编辑:复合材料看起来像
<composite:interface>
<composite:attribute name="imgId" required="true" />
<composite:attribute name="flav" default="r" />
<composite:attribute name="width" default="472" />
</composite:interface>
<composite:implementation>
<h:form id="${cc.attrs.imgId}" styleClass="small">
<f:event type="postAddToView" listener="#{mBean.register}" />
<f:attribute name="myId" value="hmta${cc.attrs.imgId}" />
<h:graphicImage width="${cc.attrs.width}" id="${cc.attrs.imgId}"
onclick="this.nextSibling.value=mods(event)" onmouseover="aa=this.id"
value="images/img?#{cc.attrs.flav}=#{Math.random()}">
<f:ajax event="click" execute="@this k"
listener="#{mBean.handleEvent}" render="@this">
</f:ajax>
</h:graphicImage>
<h:inputHidden id="k" value="#{mBean.keyX}" />
</h:form>
</composite:implementation>
Edit2:每页通常会多次使用复合。