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

有条件渲染的输入组件不更新值

劳和歌
2023-03-14

使用jsf 2和Primeface 3.4

我知道有许多类似的问题,但没有一个能解决这个问题。

当面板网格“内部”以固定值“true”呈现时(

但是当这个面板的渲染是有条件的:

注意:我使用嵌套的panelGrids将渲染条件放在需要有条件渲染的组件(输出和输入组件)的父元素中。感谢您的帮助。

[评论后编辑:]xhtml页面的作用:
-当用户单击selectOne按钮中的“合并”选项时,ajax更新将“renderInputMerge”切换为true,这会导致显示“外部”组件。它工作正常。在这个组件中,有一个输入字段,显示为OK。
-用户单击命令链接按钮后,我需要检索此输入字段的值。如上所述,我对此有问题。

xhtml:

<h:body style ="width:100%">


    <h:form id = "currMatch">

        <h:panelGrid>

            <p:selectOneButton id ="selection" value="#{spellCheckBean.optionChosen}">
                <f:selectItem itemLabel="keep both" itemValue="1" />
                <f:selectItem itemLabel="delete both" itemValue="2" />
                <f:selectItem itemLabel="merge" itemValue="3" />
                <p:ajax update="outer" />
            </p:selectOneButton>

        </h:panelGrid>

         <h:panelGrid id="outer" >
            <h:panelGrid id="inner" rendered="#{spellCheckBean.renderInputMerge}">
            <!-- **the line above does not update**, this one does    <h:panelGrid rendered="true">-->

                <h:outputText value="our suggestion:  "  style ="margin-left: auto; margin-right: auto"/> 
                     <h:inputText id ="testinput" value="#{tableMatchesBean.mergedAuthorAjax}">
                     </h:inputText>
                </h:panelGrid>    
        </h:panelGrid>

        <p:commandButton action="#{tableMatchesBean.next_()}" 
                         title="Add"
                         value="next"
                         update ="currMatch"
                         >

        </p:commandButton>




    </h:form>
</h:body>

共有2个答案

丁和歌
2023-03-14

尝试用jstlc:if标记代替渲染的。这对我来说很管用。

寿卜鹰
2023-03-14

呈现的条件显然取决于请求范围的变量,例如请求范围的托管bean的属性或请求参数。表单提交帐户作为一个完全独立的全新请求,所有请求范围内的托管bean都是新创建的,所有属性都设置为默认值。如果在收集提交的值(表单提交的应用请求值阶段)期间,呈现的属性计算为false,则不会收集这些值。

基本上有两种方法可以解决这个问题:

>

  • 确保渲染属性背后的条件在请求范围bean的(post)构造函数中正确预初始化,以便它在处理表单提交的请求期间返回完全相同的值,因为它是在向最终用户显示表单的请求期间。

    将bean放在视图范围中。这样,只要您通过ajax或通过在action方法中返回void或null与同一视图交互,bean实例就会一直存在。

    • commandButton/commandLink/ajax操作/侦听器方法未调用或输入值未更新(第5点适用于您)

  •  类似资料:
    • 我在中有条件渲染组件。我使用最新版本,并在我的应用程序中使用。此组件用于显示带有文本的跨距,一旦用户单击它,它将变为带有组件的输入,用户可以通过此组件更改字段 首先,呈现一个值为的跨度,该跨度来自该组件的道具,单击该跨度,状态变为true,呈现的组件,我希望在呈现后尽快关注该。为此,我呈现一个并定义其属性,该属性将输入传递给名为的函数,并在该函数中写入focus方法。但当我单击“跨度”并重新渲染组

    • 本文向大家介绍怎样有条件地渲染组件?相关面试题,主要包含被问及怎样有条件地渲染组件?时的应答技巧和注意事项,需要的朋友参考一下 or

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

    • Mpx中的条件渲染与原生小程序中完全一致,详情可以查看这里 简单示例如下: <template> <view class="container"> <!-- 通过 wx:if 的语法来控制需要渲染的元素 --> <view wx:if="{{ score > 90 }}"> A </view> <view wx:elif="{{ score > 60 }}"> B </

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

    • 我刚刚安装了grails渲染插件,并想使用它来生成PDF文件。我创建了简单的模板,但此插件不渲染检查输入元素。当我将输入写为以下内容时: 我收到以下错误消息: 当我添加结束标记时,如下所示: 我在PDF中没有任何检查元素。我不是说,我想要在交互模式下进行检查,但是,我想要一个看起来像复选框的图像