【问题标题】:Primefaces 3.5 + OmniFaces 1.3 SelectItemsIndexConverter issue with SelectOneMenuPrimefaces 3.5 + OmniFaces 1.3 SelectItemsIndexConverter 问题与 SelectOneMenu
【发布时间】:2012-11-23 05:52:59
【问题描述】:

我正在使用 Primefaces 3.5 2012 年 12 月 5 日的快照,以及 Mojarra 2.1.14 和 Tomcat 7.0.33。

当对带有模型/实体类的 POJO 对象使用单元内编辑模式(非行内)时,无论何时单击一个对象并然后通过单击其他对象“单击离开”,前一个对象显示其值而不是其标签。这只是“装饰”,因为当您重新加载页面时,它会显示标签值。

<p:dataTable id="insurancepolicyTable" var="insurancepolicy" widgetVar="insurancepolicyList" value="#{insurancepolicybean.objectList}" paginator="true" rows="15" paginatorPosition="bottom" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" currentPageReportTemplate="#{text['table.insurancepolicy.filter.count']}" rowsPerPageTemplate="15,25,50,100" emptyMessage="#{text['table.insurancepolicy.filter.notfound']}" filteredValue="#{insurancepolicybean.filteredObject}" editable="true" editMode="cell" cellEditEvent="click" draggableColumns="true" rowKey="#{insurancepolicy.id}" > 


               <p:column id="branchColumn" headerText="#{text['label.branch']}" sortBy="#{insurancepolicy.branch.name}" filterBy="#{insurancepolicy.branch.name}" filterMatchMode="contains">  
                <p:cellEditor>  
                    <f:facet name="output">  
                        <h:outputText value="#{insurancepolicy.branch.name}" />  
                    </f:facet> 
                    <f:facet name="input">  
                        <div  class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all">
                            <p:selectOneMenu id="branchselectinsurancepolicylist" value="#{insurancepolicy.branch}" styleClass="customSelect" converter="omnifaces.SelectItemsIndexConverter">                      
                                <f:selectItems value="#{insurancepolicybean.branchList}" var="branch" itemLabel="#{branch.name}" itemValue="#{branch}" />                    
                            </p:selectOneMenu>    
                        </div>
                    </f:facet> 
                </p:cellEditor>    
            </p:column>   
            <p:ajax event="cellEdit" listener="#{insurancepolicybean.onEdit}" update="@form" />
            <pe:resetInput event="cellEdit" for="@form" />

        </p:dataTable>  

【问题讨论】:

  • 您是否暗示它在不使用SelectItemsIndexConverter 时按预期工作?
  • 没有。它适用于没有转换器的简单字符串数组的 selectonemenus。
  • 当它工作时,您是否使用相同的字符串值作为项目值和项目标签?这看起来很像 PrimeFaces 错误,其中选项值在编辑后重新显示,而不是选项标签。这不是由 OmniFaces 转换器引起的。
  • 我使用了相同的值/标签对。我想这就是它似乎“起作用”的原因。

标签: java jsf primefaces omnifaces


【解决方案1】:

我可以复制它。这是 PrimeFaces 中的一个错误。此问题与转换器无关。该问题只是由 PrimeFaces 特定的 JavaScript 代码引起的,该代码在“取消编辑”后错误地重新显示所选选项的值而不是所选选项的标签。

这更容易复制如下:

<p:selectOneMenu value="#{insurancepolicy.branchAsString}">                      
    <f:selectItems value="#{insurancepolicybean.branchMap}" />
</p:selectOneMenu>

private Map<String, String> branchMap;

@PostConstruct
public void init() {
    branchMap = new LinkedHashMap<String, String>();
    branchMap.put("branch label 1", "branch value 1");
    branchMap.put("branch label 2", "branch value 2");
    branchMap.put("branch label 3", "branch value 3");
}

我向 PrimeFaces 人推荐 report

【讨论】:

  • 谢谢,我已经在code.google.com/p/primefaces/issues/detail?id=4971 下报告了。感谢您的努力。
  • 根据我在 Primefaces 问题跟踪器中看到的评论,我怀疑 Primefaces 团队想要解决这个问题。您知道需要修复哪些 Javascript 吗?我试图调查它,但不明白是哪个代码导致了这种情况。
猜你喜欢
  • 2013-11-30
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 2023-03-16
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多