当前位置: 首页 > 知识库问答 >
问题:

AJAX渲染属性不适用于渲染="false"组件[重复]

茅高卓
2023-03-14

我有一个组件,我想在用户点击命令按钮后显示/隐藏。

它是这样的:

<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
    <f:ajax listener="#{bean.toggle()}" render="explanation showButton" />
</h:commandButton>

<h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
    <h:outputText value="something" />
</h:panelGroup>

bean。toggle()只需将wasPressed属性适当地设置为true或false。我正在使用<代码>

问题是“我的按钮”的“渲染”属性的值。它明确地包括两个方面:解释和显示按钮。

只要show Button始终存在(它只更改它的标签),解释仅在wasPress属性为真时才存在。否则它说:

malformedXML:更新期间:找不到解释

我如何解决这个问题?

我不想恢复到在源代码中隐藏元素,所以我不想使用任何jQuery toggle(-)或使用style="show: no"隐藏元素的任何方式或任何这些东西。

在JSF 2.1中甚至可以实现吗?

共有1个答案

湛联
2023-03-14

您不能更新未呈现的元素,rendered=false“是JSF从DOM树中删除元素的方法,

它不像css显示:无或可见性:隐藏

因此,在您的情况下,您需要用另一个“panelGroup”包装panelGroup并更新包装器的id

<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
    <f:ajax listener="#{bean.toggle()}" render="explanationWrapper showButton" />
</h:commandButton>


<h:panelGroup id="explanationWrapper">
    <h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
        <h:outputText value="something" />
    </h:panelGroup>
</h:panelGroup>

再看看类似的问题

您可以从p:ajax侦听器更新h:outputLabel吗?

 类似资料:
  • 问题内容: 我有一个要在用户点击时显示/隐藏的组件。 就像这样: 和 在简单地设置属性为true或false适当。我正在使用。 问题是我的按钮的属性值。它明确列出了和。 只要始终存在(仅更改其标签),则仅在属性为true 时才存在。否则它说: malformedXML:更新期间:找不到说明 我怎么解决这个问题? 我不想回到隐藏源代码中的元素的位置,所以我不想使用任何jQuery toggle(-)

  • 我试图用ajax更新一个有条件渲染的组件。 但是,这不起作用。我可以保证实际上是可用的。这是如何造成的,我如何解决它?

  • 我对react还比较陌生,我一直在分解一个web应用程序,并用react组件替换部分。我现在正在开发一个组件,其中包含我创建的几个不同组件。 在新组件中,我在componentDidMount函数中进行API调用,并创建子组件。乍一看,一切看起来都很完美,但当我们在其中一个子组件中进行状态更改,然后在父组件中进行更改时,子组件将其状态重置为更改之前的状态。 我知道发生了什么,州政府没有被传递给家长

  • 问题内容: 我尝试运行RichFaces4应用,但组件未渲染。例如,当我尝试这个演示:演示时,我得到如下信息: 我的代码与演示中的代码几乎相同。我刚刚添加了表单标签,因为它对此有所抱怨。 问题答案: 这就是Crome开发人员工具告诉我的内容 http://img571.imageshack.us/i/rfnotdefined.jpg (未捕获的ReferenceError:未定义RichFaces

  • 问题内容: 我建立了一个复合组件,看起来像这样: 组件正确显示当前标签。 现在,当执行该动作时,什么也不会发生。但是,当我将Postfix添加到组件中的ID时,它可以正常工作(请参见下文)。 并使用后缀在render中定义ID: 有人可以向我解释为什么仅当我在ID中添加后缀时才起作用吗? 问题答案: 这个问题实际上有两个方面。 第一个问题是,实际上指定复合部件的ID 本身 的。默认情况下,HTML

  • 我的程序出了什么问题?我觉得一切都很好。我的方法获取所选值“REFERENCE”,并将布尔值设置为showReference。但是,如果我在p:ajax中使用update=“targetPanel”,我的页面无法呈现。当我使用update=“entryForm”时,它可以渲染h:panelGroup。 我错过了什么? 我的页面。xhtml 关键因子值。Java语言 我的豆子。Java语言