Ajax 更新不起作用

发布于 2024-12-10 22:42:12 字数 822 浏览 0 评论 0原文

为什么#{uImanager.select}从未更新?

<p:panel id="EditDetailsPanel" header="Edit Details">
    <h:panelGrid columns="2" cellpadding="5">
        <h:outputLabel value="Simple :" />
        <h:selectOneMenu value="#{uImanager.select}">
            <f:selectItem itemValue="val1" itemLabel="Coffee1" />
            <f:selectItem itemValue="val2" itemLabel="Coffee2" />
            <f:selectItem itemValue="val3" itemLabel="Coffee3" />                                  
        </h:selectOneMenu>
    </h:panelGrid>
    <p:commandButton value="Submit" update="EditDetailsForm:EditDetailsPanel"/>
    #{uImanager.select}
</p:panel> 

它指向一个带有 getter 和 setter 的 private String Select;。它是在会话范围的托管 bean 中定义的。

Why is the #{uImanager.select} never updated?

<p:panel id="EditDetailsPanel" header="Edit Details">
    <h:panelGrid columns="2" cellpadding="5">
        <h:outputLabel value="Simple :" />
        <h:selectOneMenu value="#{uImanager.select}">
            <f:selectItem itemValue="val1" itemLabel="Coffee1" />
            <f:selectItem itemValue="val2" itemLabel="Coffee2" />
            <f:selectItem itemValue="val3" itemLabel="Coffee3" />                                  
        </h:selectOneMenu>
    </h:panelGrid>
    <p:commandButton value="Submit" update="EditDetailsForm:EditDetailsPanel"/>
    #{uImanager.select}
</p:panel> 

It points to a private String Select; with a getter and setter. It's defined in a session scoped managed bean.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

折戟 2024-12-17 22:42:12

因为您的 update 属性可能指向无效的客户端 ID。如果您注意服务器日志,那么您应该从 PrimeFaces 中看到类似以下内容:

INFO: Cannot find component with identifier "EditDetailsForm:EditDetailsPanel" in view.

由于 位于同一个 UINamingContainer 父级作为 本身(至少,根据您迄今为止发布的代码),您可以只指定其相对客户端 ID:

<p:commandButton value="Submit" update="EditDetailsPanel"/>

或者如果您坚持指定绝对客户端 ID ,那么您需要在其前面加上 : 前缀:

<p:commandButton value="Submit" update=":EditDetailsForm:EditDetailsPanel"/>

请注意,只有当 本身没有另一个 UINamingContainer 父级。在浏览器中打开页面,右键单击并查看源代码以计算生成的 HTML 元素 ID。最后,您需要获取该值,并以 : 为前缀。

Because your update attribute likely points to an invalid client ID. If you paid attention to the server logs, then you should have seen something like the following from PrimeFaces:

INFO: Cannot find component with identifier "EditDetailsForm:EditDetailsPanel" in view.

As the <p:panel> is inside the same UINamingContainer parent as the <p:commandButton> itself (at least, based on the code which you've posted so far), you can just specify its relative client ID:

<p:commandButton value="Submit" update="EditDetailsPanel"/>

Or if you insist in specifying the absolute client ID, then you need to prefix it with ::

<p:commandButton value="Submit" update=":EditDetailsForm:EditDetailsPanel"/>

Note that this only works if the <h:form> does by itself not have another UINamingContainer parent. Open the page in browser, rightclick and View Source to figure the generated HTML element ID. Finally you need to take that value, prefixed with :.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文