代码之家  ›  专栏  ›  技术社区  ›  purecharger

如何在jsf模板中定义onload函数,该函数将在其他地方定义

  •  4
  • purecharger  · 技术社区  · 15 年前

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

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  7
  •   Bozho    15 年前

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

    1. 定义标题部分 <ui:define name="header"> ,并放置一个javascript函数( function bodyLoaded(){..} )每一页都有不同的内容,然后通过 <body onload="bodyLoaded();">

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