4

我正在为我的网站设计视图,该网站有一个标准的登录和登录页面,我希望为我的登录页面调用一个 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 的页面都会填充这个函数。那可能吗?

谢谢!

4

1 回答 1

9

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

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

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

于 2010-03-03T23:22:46.170 回答