我从模型中渲染搜索蒙版。一种可能的搜索掩码输入类型是来自n选择的1。这个来自n类型的1包含p:inputText
以显示所选值,p:commandButton
打开p:overlayPanel
以选择值,另一个p:commandButton
来清除所选值。
在一种情况下,不会更新清除按钮。 ajax响应不包含要更新的输入字段。
E. g。我在搜索掩码中的n个字段中有3个。为每件作品选择一个值,清除每件作品。当我为所有值分配并提交表格(执行搜索)时,一切都很好。现在我按下n字段的清除按钮1。 1,价值被清除......很好。这也适用于第二个字段,但不适用于最后一个字段。如何提到缺少ajax响应中的更新,但是执行了bean方法。任何的想法?或者我该如何调试它?
1个来自n字段的元素的代码:
<ui:param name="curFieldSize" value="cc.attrs.curMaskElement.getSize()}" />
<ui:param name="curDummyCssClass" value="searchFieldChoiceDummyCssClass#{cc.attrs.curRowIndex}#{cc.attrs.curColumnIndex}" />
<p:inputText value="#{cc.attrs.curMaskElement.propertyValue}" readonly="true" styleClass="#{curDummyCssClass}" size="#{curFieldSize}"
rendered="#{curIsChoice and (curFieldSize gt 0)}">
<f:converter converterId="choiceConverterSearchMask" />
</p:inputText>
<p:inputText value="#{cc.attrs.curMaskElement.propertyValue}" readonly="true" styleClass="#{curDummyCssClass}"
rendered="#{curIsChoice and (curFieldSize le 0)}">
<f:converter converterId="choiceConverterSearchMask" />
</p:inputText>
<p:commandButton id="colChoiceSelectionButtonId" oncomplete="PF('choiceSelectionSearchVar').loadContents('#{component.clientId}');"
immediate="true" actionListener="#{searchChoiceListController.setSelectedObject(cc.attrs.curMaskElement)}"
process="@this" />
<p:commandButton immediate="true" actionListener="#{searchMaskBL.clearChoiceSelection(cc.attrs.curMaskElement)}"
update="@(.#{curDummyCssClass})" process="@this @(.#{curDummyCssClass})" />
有2 p:inputText
因为模型可以定义字段的可变大小或固定大小。因此定义size
属性而不定义属性。我还没有找到属性大小的值,所有浏览器都会以相同的方式忽略它。我也试着避免使用JSTL。所以我必须有条件地渲染不同的inputText
。
我使用的是Mojarra 2.2.10和PF 5.2.6。
这是用于清除输入字段的命令按钮的渲染html:
<button id="searchInstancesFormId:j_idt261:1:j_idt263:1:j_idt265:colChoiceListSelectionButtonClearId" name="searchInstancesFormId:j_idt261:1:j_idt263:1:j_idt265:colChoiceListSelectionButtonClearId" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only removeChoiceValueButton" onclick="PrimeFaces.ab({s:"searchInstancesFormId:j_idt261:1:j_idt263:1:j_idt265:colChoiceListSelectionButtonClearId",u:"@(.searchFieldChoiceDummyCssClass11)"});return false;" title="Alle Werte entfernen" type="submit" role="button" aria-disabled="false"><span class="ui-button-icon-left ui-icon ui-c removeChoiceValueButtonIcon"></span><span class="ui-button-text ui-c">ui-button</span></button>
这是输入字段的html:
<input id="searchInstancesFormId:j_idt261:1:j_idt263:1:j_idt265:choiceInputSizedId" name="searchInstancesFormId:j_idt261:1:j_idt263:1:j_idt265:choiceInputSizedId" type="text" value="Debitorisch" size="50" title="choice" readonly="readonly" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all searchMaskInputElement searchMaskInputChoiceElement searchFieldChoiceDummyCssClass11" role="textbox" aria-disabled="false" aria-readonly="true">
使用css类@(.searchFieldChoiceDummyCssClass11)
完成更新。但我真的不知道为什么最后的输入字段没有更新,而是之前的所有其他输入字段。
编辑:如果使用id而不是css类
完成更新,则会出现相同的行为