gpt4 book ai didi

ajax - 更新primefaces命令按钮属性的值

转载 作者:行者123 更新时间:2023-12-04 18:18:58 25 4
gpt4 key购买 nike

我在这里有一个关于primefaces 命令按钮的更新属性的值的查询。

这是一个简单的代码。我有一个简单的 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”,因为这是确切的id我在浏览器的 View 源中找到的 HTML DOM。但是,即使只在更新属性中给出“测试”,我也能够更新。
所以我的问题是我什么时候应该在id中使用“:”或者它是强制性的还是有任何预定义的规则来在属性中给出id?

另外,我知道更新属性中给出的 id 是通过它所在的 UINamingContainer 给出的。如果它微不足道,请原谅我,我在这里真的很困惑。

非常感谢任何帮助。
谢谢你。

最佳答案

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

jsf 中的 NamingContainers 是所有将自己的 id 附加到所有子组件的客户端 id 的组件,例如<h:form> , <h:dataTable><ui:repeat> (或者更准确地说:所有实现 javax.faces.component.NamingContainer 接口(interface)的组件)。

如果两个组件不在同一个 NamingContainer 中,则必须使用以 : 开头的绝对 ID。从 View 根。

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

请注意 :是分隔 clientId 段的默认字符。您可以使用 web.xml 中的上下文参数更改它。 .

关于ajax - 更新primefaces命令按钮属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com