遵循此示例http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=editDataTable&cid=101317我创建了一个用于编辑条目的模式面板。区别在于我的一个inputText字段有一个建议框:
<h:inputText id="entryName" value="#{controller.currentItem.name}" validator="#{controller.entryNameValidator}"/>
<rich:suggestionbox id="suggestionBoxId" for="entryName" suggestionAction="#{controller.autocomplete}" var="result">
<h:column>
<h:outputText value="#{result.name}" />
</h:column>
</rich:suggestionbox>
<rich:message for="entryName"/>
问题在于,当模式出现并且我在“entryName”中更改单个字母时,会发生建议,但是当它找不到任何建议时,它会将更改后的值(没有我刚刚删除的字母的那个)恢复为原始值(删除前的那个)。另一方面,如果它找到了一些建议,它仍然将值恢复为旧的,但也会在“entryName”下面的模态中打印建议(而不是在建议框中,它只是灰色文本)。此建议也只触发一次。如果我说让“你好”更改为“地狱”,它会恢复为“你好”,下次我尝试将其修改为“地狱”时没有任何反应。
我做错了什么?哦,我在jsf视图中使用非常完全相同的代码添加条目(虽然它不是一个模态,只是一个表),它工作正常。
@Edit:显然用“a4j:region”封闭它有点帮助,因为至少我能看到建议框(但在后台,所以我必须设置zindex)并在左下角浏览器不在“entryName”之下但仍然无法点击它(它只是坐在那里,即使关闭模态后也不会消失),建议仍然打印在inputText下面(不在建议框和灰色中) )它仍然只触发一次......
答案 0 :(得分:0)
根据您的要求尝试修改以下内容。
enter code here <h:panelGrid columns="2" cellpadding="0" cellspacing="0">
<h:inputText id="input" size="30"/>
<h:graphicImage value="#{facesContext.externalContext.requestContextPath}/../images/arrow.png"
onclick="#{rich:component('equity')}.callSuggestion(true)"
alt="click" />
</h:panelGrid>
<rich:suggestionbox width="200"
suggestionAction="#{StockMasterServiceBean.suggest}" var="stock" id="equity" for="input">
<h:column>
<h:outputText value="#{stock.symbolId}"/>
</h:column>
<h:column>
<h:outputText value="#{stock.companyName}" />
</h:column>
<a4j:support ajaxSingle="true" event="onselect" reRender="abc,xyz">
<f:setPropertyActionListener value="#{stock}" target="#{StockMasterServiceBean.selectedStockMaster}"/>
</a4j:support>
</rich:suggestionbox>