当前位置: 首页 > 面试题库 >

我可以更新标题栏吗?

蓝昊然
2023-03-14
问题内容

在上一个问题中,我问过有关更新菜单栏的问题。BalusC告诉我,我需要添加包含菜单栏的表单。

我想扩展这个问题,以询问是否可以更新标题中的文本。正在使用模板,我使用填写了值

    <ui:define name="AreaTitle">
        #{viewBacking.current.firstName}  #{viewBacking.current.surName}
    </ui:define>

模板有

<h:head>
<title><ui:insert name="AreaTitle">Master template</ui:insert></title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</h:head>

在标题中定义表单似乎很奇怪,因此没有定义。我在viewBacking.current中放置了一个断点,以便可以看到它何时使用它。即使我单击刷新以重新显示该窗体,它也不会再次达到断点。只有当我转到内容不同的其他页面时,它才会再次达到断点。刷新为

public void refreshForm() {
    RequestContext context = RequestContext.getCurrentInstance(); 
    context.update("menuForm:masterMenuBar");
    context.update("AreaTitle");
}

这显示了BalusC在masterMenuBar上给我的先前解决方案。很可能我无法完成我要求做的事情,但是我想确认是否是这种情况。

谢谢


问题答案:

您不能仅仅通过JSFajax更新来更新标题,因为<title>它不是JSF组件。您也不能将HTML或JSF组件放入中<title>,这是非法的
HTML语法。

最好的选择是使用JavaScript而不是通过将标题分配给来更新标题document.title。您可以使用RequestContext#execute()它。

String fullName = current.getFirstName() + " " + current.getSurName();
context.execute("document.title="" + fullName + "'");

由于这似乎是用户控制的数据,因此我将对其StringEscapeUtils#escapeJavaScript()进行转义以防止潜在的XSShtml" target="_blank">攻击漏洞。

String fullName = current.getFirstName() + " " + current.getSurName();
context.execute("document.title="" + StringEscapeUtils.escapeJavaScript(fullName) + "'");

另一种方法是使用OmniFaces
<o:onloadScript>

<o:onloadScript>document.title="#{of:escapeJS(viewBacking.current.firstName)} #{of:escapeJS(viewBacking.current.surName)}"</o:onloadScript>

这将在每个ajax请求上重新执行。



 类似资料:
  • 标题栏放在页面顶部 <header class="bar bar-nav">   <h1 class="title">标题</h1> </header>

  • 我们的应用程序已经用了GtkHeaderBar,但至今它仍然只在顶端显示一个‘正常’的window titlebar。这有点多余,我们现在要用header bar 来替代titlebar。为了达到目的,我们将header bar移到窗口的直接子成员中,并把它设为titlebar。 <?xml version="1.0" encoding="UTF-8"?> <interface> <!-- i

  • 问题内容: 我们可以如下将样式设置为html head标题中的title标签。我试过了没用.. 问题答案: 您可以将CSS应用于元素,但不能应用于属性(因为它适用于“除BASE,BASEFONT,HEAD,HTML,META,PARAM,SCRIPT,STYLE,TITLE”之外的[所有元素)。 我不知道有任何浏览器会应用CSS来在浏览器标签或标题栏中显示标题。 但是,您可以执行以下操作:

  • 我需要更改Jdialog box标题栏图标。默认情况下,它使用Java咖啡图像。 我在网上查了一下,用了很多代码 没有什么能正常工作。请你帮帮我..提前致谢

  • 问题内容: 当我更改collapsesingToolbar的标题时,标题不变。 我已经尝试过getSupportActionBar.setTitle和crashToolbar.setTitle,但这没有帮助。告诉我,怎么了? 问题答案: 我相信这个问题描述了您所遇到的问题。我也遇到了这个问题,并且今天已经解决了。本质上,处理折叠文本的代码仅在当前文本为null或文本大小更改时更新文本。当前,这是一

  • 问题内容: 我正在查看Amazon S3样本,样本在那里可以插入/删除… 但是我想用新数据更新现有的Blob。基本上,内容是文本文件,并且文本已被修改,我希望S3对象存储新的文本内容。 如何在Java中做到这一点? 问题答案: 在Amazon S3中更新现有对象与首先创建对象没有什么不同,即,使用相同的PUT Object 操作上载对象,并将覆盖现有对象(如果不受其他方式的保护,例如通过使用存储桶