【问题标题】:JSF autocomplete ignoring null valuesJSF自动完成忽略空值
【发布时间】:2012-08-04 12:11:53
【问题描述】:

我对 jsf 自动完成元素有疑问。我希望我的页面有一个自动完成元素,并且在用户从字段中选择一个值后,会自动创建另一个字段。自动完成字段的最大数量为 3,因此在第 3 个之后,第 4 个被禁用:

<h:outputLabel for="fieldsOfStudy" value="#{amsg.fieldsOfStudy}"/>

<p:outputPanel id="fieldsOfStudy" autoUpdate="true" layout="block">
     <ui:repeat value="#{cc.attrs.offer.fieldsOfStudy}" var="studyField" varStatus="status">

          <h:panelGroup id="studyField" layout="block">
              <h:outputText value="#{amsg.handleGetObject(enumHelper.toMessageKey(studyField))}"/>
              <p:commandLink action="#{cc.attrs.offer.removeFieldOfStudy(status.index)}" process="@this"
                       update="@([id$=fieldsOfStudyAutocomplete])" styleClass="ui-icon ui-icon-close"/>
          </h:panelGroup>

     </ui:repeat>
</p:outputPanel>

<h:message for="fieldsOfStudy" errorClass="error"/>

<h:panelGroup id="fieldsOfStudyAutocomplete">
     <p:autoComplete value="#{offerBean.selectedFieldOfStudy}" dropdown="true" required="#{empty cc.attrs.offer.fieldsOfStudy}"
                       completeMethod="#{offerBean.completeFieldsOfStudy}" disabled="#{cc.attrs.offer.fieldsOfStudy.size() &gt;= 3}"
                       itemValue="#{p}" var="p" itemLabel="#{amsg.handleGetObject(enumHelper.toMessageKey(p))}" styleClass="xLargeInput">
              <p:ajax event="itemSelect" process="@this" update="@this"/>
     </p:autoComplete>
</h:panelGroup>

一切都像这样工作得很好,但问题是,如果“学习领域”列表有 1 个从自动完成中选择的元素,则每次用户按下保存按钮时,列表中都会有另一个具有空值的元素。如果有 2 个选定的“研究领域”,那么第三个也将被创建,但会有一个空值。如果有 3 个选定的“研究领域”,则列表中不会有任何第 4 个元素。

有什么方法可以设置自动完成以忽略空字段?换句话说,如果用户没有从自动完成中选择任何内容,如何不将空值传递给 DTO?

【问题讨论】:

    标签: java jsf autocomplete null


    【解决方案1】:

    我找到了办法。在 bean 中设置值时,您可以轻松地放置这样的 if 语句:

    public void setSelectedFieldOfStudy(FieldOfStudy selectedFieldOfStudy) {
        if (selectedFieldOfStudy != null) {
            this.emptyOffer.getFieldsOfStudy().add(selectedFieldOfStudy);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 2015-06-08
      • 2021-10-20
      • 1970-01-01
      • 2013-12-23
      • 2012-02-18
      • 2020-02-14
      • 2012-12-02
      相关资源
      最近更新 更多