Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 值以更新primefaces命令按钮的属性_Ajax_Jsf 2_Primefaces - Fatal编程技术网

Ajax 值以更新primefaces命令按钮的属性

Ajax 值以更新primefaces命令按钮的属性,ajax,jsf-2,primefaces,Ajax,Jsf 2,Primefaces,这里有一个关于primefaces命令按钮的update属性的值的查询 下面是一个简单的代码。我有一个简单的xhtml页面 <h:body> <h:form id="main"> <p:growl id="maingrowl" showDetail="true"></p:growl> <p:panelGrid id="mainpanel" columns="2"> <p:commandBu

这里有一个关于primefaces命令按钮的update属性的值的查询

下面是一个简单的代码。我有一个简单的xhtml页面

<h:body>
<h:form id="main">
    <p:growl id="maingrowl" showDetail="true"></p:growl>
    <p:panelGrid id="mainpanel" columns="2">

            <p:commandButton value="Ajax Submit" update="test" id="ajax"
                actionListener="#{mytestBean.display}" />


    </p:panelGrid>

    <p:panelGrid id="test" rendered="#{mytestBean.show}" columns="1">
        <h:inputText value="#{mytestBean.val1}" />
        <h:inputText value="#{mytestBean.val2}" />
        <p:commandButton value="value in" id="aj" update="test"
            actionListener="#{mytestBean.displaysec}">
            </p:commandButton>
    </p:panelGrid>

</h:form>
</h:body>

现在,如果我必须更新panelgrid“test”,那么在第一个命令按钮中,我必须在命令按钮的更新属性中提供前缀为“:main:”的id“test”,因为这是我在浏览器的视图源中找到的HTML DOM中的确切id。但是,即使在update属性中只给出“test”,我也能够进行更新。 所以我这里的问题是什么时候应该在id中使用“:”,或者它是强制性的,或者在属性中是否有任何预定义的规则来指定id

另外,我知道update属性中给出的id是通过它所在的UINamingContainer提供的。如果是琐碎的,请原谅,我在这里真的很困惑

非常感谢您的帮助。 谢谢。

如果两个组件(要更新的组件和触发更新的组件)都在同一个NamingContainer中,则不带
的相对客户端id就足够了

jsf中的NamingContainers是将自己的id预先添加到所有子组件的客户端id的所有组件,例如
(或者更准确地说:实现接口的所有组件)

如果两个组件不在同一NamingContainer中,则必须使用视图根目录中以
开头的绝对id

如果您对更详细的信息感兴趣,我建议您阅读描述搜索算法的方法的javadoc

请注意,
是分隔clientId段的默认字符。如果两个组件(要更新的组件和触发更新的组件)都位于同一NamingContainer中,则不带
的相对客户端id就足够了,您可以在
web.xml中使用上下文参数对其进行更改

jsf中的NamingContainers是将自己的id预先添加到所有子组件的客户端id的所有组件,例如
(或者更准确地说:实现接口的所有组件)

如果两个组件不在同一NamingContainer中,则必须使用视图根目录中以
开头的绝对id

如果您对更详细的信息感兴趣,我建议您阅读描述搜索算法的方法的javadoc


请注意,
是分隔clientId段的默认字符。您可以在
web.xml

中使用上下文参数对其进行更改。如果我提供了view source,则必须呈现的组件id的前缀为“:”。你的意思是不管它是否有id,我仍然可以通过id来引用它来渲染组件,是吗?我希望你明白我的意思。如果它们在同一个容器中(在你的示例中就是这样),那么组件的简单客户端id就可以了。好的。。这将清除所有(希望:))。我将在少数其他情况下进行测试。感谢您的澄清。如果我给出view source,则必须呈现的组件id的前缀为“:”。你的意思是不管它是否有id,我仍然可以通过id来引用它来渲染组件,是吗?我希望你明白我的意思。如果它们在同一个容器中(在你的示例中就是这样),那么组件的简单客户端id就可以了。好的。。这将清除所有(希望:))。我将在少数其他情况下进行测试。谢谢你的澄清。