gpt4 book ai didi

jsf - Ajax 更新/渲染不适用于具有渲染属性的组件

转载 作者:行者123 更新时间:2023-12-03 06:09:45 25 4
gpt4 key购买 nike

我正在尝试使用 ajax 更新条件渲染的组件。

<h:form>
...
<h:commandButton value="Login" action="#{login.submit}">
<f:ajax execute="@form" render=":text" />
</h:commandButton>
</h:form>
<h:outputText id="text" value="You're logged in!" rendered="#{not empty user}" />

但是,这不起作用。我可以保证 #{user} 确实可用。这是怎么造成的以及如何解决?

最佳答案

如果组件本身没有首先渲染,则不可能通过 ajax 重新渲染(更新)组件。组件必须始终在 ajax 重新渲染之前渲染。 Ajax 使用 JavaScript document.getElementById() 来查找需要更新的组件。但是,如果 JSF 没有首先呈现该组件,那么 JavaScript 就无法找到任何要更新的内容。

解决方案是简单地引用始终呈现的父组件。

<h:form>
...
<h:commandButton ...>
<f:ajax ... render=":text" />
</h:commandButton>
</h:form>
<h:panelGroup id="text">
<h:outputText ... rendered="#{not empty user}" />
</h:panelGroup>

另请参阅:

关于jsf - Ajax 更新/渲染不适用于具有渲染属性的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790014/

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