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

标签 java jsp jsf facelets

我正在为我的网站设计 View ,它有一个标准的登录和登陆页面,我想为我的登录页面调用一个 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. <ui:define name="header"> 定义标题部分, 并在其中放置一个 javascript 函数 ( function bodyLoaded(){..} ) - 每个页面都不同,然后通过 <body onload="bodyLoaded();"> 引用它

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

关于java - 如何在 JSF 模板中定义将在别处定义的 onLoad 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375676/

相关文章:

java - 将 sqlite 数据库添加到可执行 JAR 文件

java - 将 Set<Integer> 的集合转换为列表列表

java - 将报告生成为 txt 文件 - 如何为列标题和详细信息带中的文本设置准确的位置和大小

java - Apache Tomcat 未在 JSP 中替换\n

jsf - jsf中的spring acl

java - 将空格替换为连字符

java - jsp中如何隐藏href中的参数值?

java - 在 Spring MVC 中使用 Hibernate 从 SQL 数据库填充下拉菜单

html - 复合组件和 CSS

java.lang.ClassNotFoundException : play. db.jpa.JPABase 使用 hibernate