加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

你能从p:ajax监听器更新h:outputLabel吗?

发布时间:2020-12-16 02:54:48 所属栏目:百科 来源:网络整理
导读:我正在尝试使用p:ajax标签,然后在该监听器中,我设置了一个名为“periodRendered”的值.然后我试图通过p:ajax标签的更新来更新h:outputLabel标签.它没有更新ajaxily,我在想它是因为一个primefaces ajax标签无法更新标准的jsf outputLabel标签. 我的假设是
我正在尝试使用p:ajax标签,然后在该监听器中,我设置了一个名为“periodRendered”的值.然后我试图通过p:ajax标签的更新来更新h:outputLabel标签.它没有更新ajaxily,我在想它是因为一个primefaces ajax标签无法更新标准的jsf outputLabel标签.

我的假设是否正确,是否有更合适的标签我应该使用而不是h:outputLabel?

<h:outputLabel for="addProgramTo" value="Add Program To" />
<p:selectOneMenu value="#{ppBacker.grantProgram.grant_project_id}" id="addProgramTo" size="1" styleClass="listBoxMedium">
    <p:ajax process=":addProgram:addProgramTo" update=":addProgram:periodGrid,:addProgram:periodLabel" event="change" listener="#{ppBacker.addProgramListener}" />
    <f:selectItems value="#{ppBacker.grantProjectDropDownList}" />
</p:selectOneMenu>            

<h:outputLabel for="period" value="Period" id="periodLabel" rendered="#{ppBacker.periodRendered}">

解决方法

您无法更新未呈现的元素,render = false“是JSF方式”以从DOM树中删除元素,

它不像css display:none或visibility:hidden< - 这两个将保留DOM树中的元素但隐藏,而JSF呈现= false甚至不会渲染(保留)DOM树中的元素(你甚至看不到它在页面的“查看源”中) 所以在你的情况下你需要用`panelGroup’包装outputLabel并更新包装器的id

<h:panelGroup id="periodLabelWrapper">
    <h:outputLabel for="period" value="Period" id="periodLabel" rendered="#{ppBacker.periodRendered}">
</h:panelGroup>

并在< p:ajax update属性中引用包装器(总是在DOM树中)id,如下所示:

<p:ajax process=":addProgram:addProgramTo" update=":addProgram:periodGrid,:addProgram:periodLabelWrapper" event="change" listener="#{ppBacker.addProgramListener}" />

另一种解决方案是更新整个表单,如下所示< p:ajax update =“@ form”...这样你不需要包装outputLabel 关于你的评论问题

how does @form update the un-rendered elements,but targeting them directly through id’s does not?

您无法在更新中定位页面中不存在的元素(rendered = false)“它不在那里”

但是当你使用update =“@ form”或update =“someWrapperID”时,表单/包装器“重新计算”它的所有内部元素,包括render =“#{someBean.someCondition}”并且条件得到“重新评估” “所以,如果结果是真的,那么将展示elemet ……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读