代码之家  ›  专栏  ›  技术社区  ›  Behrang Saeedzadeh

在组件上下文之外更新组件

  •  5
  • Behrang Saeedzadeh  · 技术社区  · 14 年前

    是否可以让JSF更新放置在组件上下文之外的组件?

    当前以下页面不工作:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Welcome</title>
    </h:head>
    
    <h:body>
        <p><h:outputText id="out" value="#{user.greeting}" /></p>
    
        <h:form id="form1">
    
            <h:inputText value="#{user.name}" id="user-name" />
            <p><h:inputSecret value="#{user.password}" id="password" /></p>
            <p>
            <h:commandButton value="Login" id="login-button">
                <f:ajax execute="user-name password" render="out" />
            </h:commandButton>
            </p>
        </h:form>
    </h:body>
    
    </html>
    

    我知道如果我把 #out 组件内部 <h:form> 页面将正确呈现。但是有没有办法 外出 表单外的组件(例如,它现在在哪里)?

    1 回复  |  直到 14 年前
        1
  •  10
  •   Behrang Saeedzadeh    14 年前

    解决了的!可以参考 out 作为 :out . 以这种方式 findComponent 从视图根目录开始搜索。下面是工作解决方案:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Welcome</title>
    </h:head>
    
    <h:body>
        <p><h:outputText id="out" value="#{user.greeting}" /></p>
    
        <h:form id="form1">
            <h:inputText value="#{user.name}" id="user-name" />
            <p><h:inputSecret value="#{user.password}" id="password" /></p>
            <p>
            <h:commandButton value="Login" id="login-button">
                <f:ajax execute="user-name password" render=":out" />
            </h:commandButton>
            </p>
        </h:form>
    </h:body>
    
    </html>