2012-04-15 247 views
3

有什么方法可以将页面标题包含在f:ajax标记中,以便在运行时更新其内容? 目前我的F:AJAX标签看起来是这样的 -使用jsf 2渲染页面标题

<f:ajax render="@form"> 

我想一个ID添加到H:头标记,并且ID添加到f的“渲染”属性:AJAX标签,但如果我这样做,我得到一个错误页面加载时 -

<f:ajax> contains an unknown id 'pageHead' - cannot locate it in the context of the component B1 

欢呼声, 埃雷兹

回答

4

有趣的问题。我认为在渲染ajax(如@form)时没有这样的命令来重新呈现页面标题。你可以做的是包装<title><h:form>或其他“分组”组件(例如h:panelGroup作为丹尼尔说。)这样的:

<h:form id="titleForm"> 
     <title>#{fooBean.fooTitle}</title> 
    </h:form> 

然后调用AJAX更新如。与按钮:

 <h:commandButton immediate="true" value="Change title"> 
      <f:ajax event="click" render=":titleForm" listener="#{fooBean.changeTitle}"/> 
     </h:commandButton> 

豆:

private String fooTitle; 

    public void changeTitle() { 
     this.fooTitle= "updatedTitle"; 
    } 
// getter/setter 

我不知道还有什么可以做什么,这应该工作。因此,将title<h:form id="...">包装起来,然后从ajax进行渲染。

+0

有“@all”,但没有什么比“@form”更特别 – Ravi 2012-04-15 18:16:26

+0

@Ravi是的,我知道有“@all”。我只是想说,没有与呈现页面标题相关的标记。 – Fallup 2012-04-15 18:18:55

+1

你不必用就足够了......因为无论如何h:commandButton会以其形式包装 – Daniel 2012-04-15 19:02:10