如何在JSF模板中定义将在别处定义的onLoad函数

pur*_*ger 4 java jsf jsp facelets

我正在为我的网站设计视图,该网站有一个标准的登录和登录页面,我希望为我的登录页面调用onLoad函数,但不是我的其他页面(尚未).我有一个template.xhtml文件,它有这个插入:

<div id="content"> <ui:insert name="content"/> </div>

然后在login.xhtml我有:

<ui:define name="content"> ... </ui:define>

通常我会把它放在login.xhtml中:

<body onload="document.getElementById('login_form:name').focus();">

但由于我使用的是JSF的ui组合标签,因此我无法<body/>在login.xhtml中使用该标签(至少我尝试这样做的方式).

有没有办法用我描述的结构来实现这一目标?我想这样做的方法是让onLoad调用模板中的一个函数,然后每个带有ui:define的页面都会填充这个函数.那可能吗?

谢谢!

Boz*_*zho 8

我至少可以想到两种方式:

  1. 定义标题部分<ui:define name="header">,并在其中放置一个javascript函数(function bodyLoaded(){..}) - 在每个页面上不同,然后通过它引用它<body onload="bodyLoaded();">

  2. 使用facelets params.即<body onload="#{onLoadJS}"/>每个页面包括模板使用<ui:param name="onLoadJS" value="document.getElementById(..)" />