p:inputText元素为空,如果为';它是ajax更新属性的目标

p:inputText元素为空,如果为';它是ajax更新属性的目标,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我有下面的代码。我删除了刻面和类似的标签,以使其更具可读性。我高度怀疑他们是问题所在。我对所有标记使用Primefaces 6.1,除了表单标记是Omnifaces <h:form id="form"> <p:dataTable id="table" value="#{data.rows}" var="row" rowIndexVar="index"> <p:column id="ajaxColumn" rendered="#{true}"&

我有下面的代码。我删除了刻面和类似的标签,以使其更具可读性。我高度怀疑他们是问题所在。我对所有标记使用Primefaces 6.1,除了表单标记是Omnifaces

<h:form id="form">
    <p:dataTable id="table" value="#{data.rows}" var="row" rowIndexVar="index">
        <p:column id="ajaxColumn" rendered="#{true}">
            <p:inputText id="ajaxValue" value="#{row.ajaxValue}">
                <p:ajax event="blur" process="@this" update="@this form-table-#{index}-targetColumn" listener="#{bean.ajaxMethod(index)}"/>
            </p:inputText>
        <p:column>
        <p:column id="targetColumn"rendered="#{true}">
            <p:inputText id="targetValue" value="#{row.targetValue}"/>
        </p:column>
    </p:dataTable>
</h:form>

在“ajaxValue”inputText取消选择导致模糊事件后,我想用新值更新“targetValue”inputText。ajax调用应该将“ajaxValue”中的值发送到后端,并相应地在bean中设置“targetValue”。之后,“targetValue”应使用新值更新

我的问题是,当我将“formtable-#{index}-targetColumn”添加到ajax标记的update属性时,“targetValue”从一开始就保持为空。它在前端没有价值。如果我改为添加“form-table-0-targetColumn”,则只有第一个“targetValue”没有值

在调试时查看getter调用,无论是否具有update属性,它们的行为都是相同的

有什么想法吗


编辑:澄清。ID中的分隔符应该是“-”,而不是“:”,我相信它们通常是这样的。

在数据表中,您不能使用索引进行行更新。如果要更新同一行中的某些元素,只需使用update=“targetColumn”


(一定有重复的地方,但我找不到它,在找到之前,我会把这个答案留在这里,

那么你为什么不写:我是一个数据表,而不是-?你不能使用索引在行中更新。如果你想在同一行中更新,我相信你应该使用
update=“targetColumn”
应用程序是否在开发模式下运行?update=“targetColumn”有效,谢谢。很高兴知道。至于“:”vs“-”,这似乎是公司的决定。我稍后会问他们原因。