一尘不染

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

jsp

我正在为我的站点设计视图,该站点具有标准的登录和登录页面,并且我希望为我的登录页面(而不是我的其他页面)调用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的页面都会填充此函数。那可能吗?

谢谢!


阅读 246

收藏
2020-06-08

共1个答案

一尘不染

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

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

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

2020-06-08