Ошибка преобразования объекта JSF: значение настройки ошибки преобразования расширенного блока предложений «*» для «нулевого преобразователя»

Я использую rich:suggestionbox.

  • Выберите предложение из окна предложений
  • Тогда сохраните мою форму
  • Это вызывает ошибку проверки, говорящую rich suggestionbox Conversion Error setting value '568-UNIMED-2005' for 'null Converter'.

мне нужна помощь с

  • Что не так с моим кодом?
  • Как решить проблему?

Вот моя LcInfo фасоль

@AutoCreate
@Scope(ScopeType.CONVERSATION)
@Name("lcInfo")
@Entity
@Table(name="lc_info")
public class LcInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    private Integer id;
    private ItemIndentMast itemIndentMastBean;

    public LcInfo() {
    }


    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    //bi-directional many-to-one association to ItemIndentMast
    @ManyToOne
    @JoinColumn(name="item_indent_mast", nullable=false)
    public ItemIndentMast getItemIndentMastBean() {
        return this.itemIndentMastBean;
    }

    public void setItemIndentMastBean(ItemIndentMast itemIndentMastBean) {
        this.itemIndentMastBean = itemIndentMastBean;
    }


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        return result;
    }

    @Override
    public boolean equals(Object object) {
        if (this == object) return true;
        if (object == null) return false;
        if (getClass() != object.getClass()) return false;
        LcInfo other = (LcInfo) object;
        return id.equals(other.id);
    }


}

Вот мой исходный код XHTML с rich:suggestionbox.

            <h:inputText value="#{lcInfo.itemIndentMastBean}" id="itemIndentMastBean" required="true"/>
            <rich:suggestionbox for="itemIndentMastBean"
                suggestionAction="#{lcInfoController.suggestion}"
                var="result" 
                fetchValue="#{result}"
                minChars="3"
                nothingLabel="No capitals found" >
                <f:facet name="header">
                    <h:outputText value="Select Indent Number" style="font-size: 10px; padding-left: 5px"/>
                </f:facet>
                <h:column>
                    <h:outputText value="#{result}" />
                </h:column>
            </rich:suggestionbox>                

Вот код контроллера, как предложения загружаются из контроллера

@Name("lcInfoController")
@Scope(ScopeType.CONVERSATION)
@AutoCreate
public class LcInfoController {


    public List<ItemIndentMast> suggestion(Object query) {
        String queryText = query.toString();
        if(StringUtils.isBlank(queryText) || queryText.length() < 3) {
            return Collections.emptyList();
        }

        return itemIndentMastService.filterIndent(queryText+"%");
    }

}

person Kowser    schedule 21.08.2011    source источник


Ответы (2)


заставить ввод получить строковое значение, а не bean-компонент: изменить

value="#{lcInfo.itemIndentMastBean}",

to

  value="#{lcInfo.someString}",

JSF не знает, как обрабатывать ваш ItemIndentMast BEAN. в качестве альтернативы вы можете создать преобразователь для этого bean-компонента (преобразовать строку в bean-компонент) http://www.javabeat.net/tips/70-create-simple-custom-converter-implementation.html

person dov.amir    schedule 28.08.2011
comment
JSF не знает, как отобразить ваш ItemIndentMast BEAN, что вы имели в виду? Буду рад, если вы объясните подробнее. - person Kowser; 28.08.2011
comment
jsf получает строку в ‹h:inputText .. › и пытается преобразовать ее в объект itemIndentMastBean, но itemIndentMastBean не является строкой, поэтому происходит сбой. a ‹h:inputText .. › должен быть прикреплен к строкам, если вы хотите прикрепить его к объекту, у вас должен быть конвертер из входной строки в объект - person dov.amir; 28.08.2011
comment
пользовательский конвертер звучит как хороший вариант. Я попробую, когда у меня будет возможность, и дам вам знать. - person Kowser; 29.08.2011
comment
пытаюсь добавить конвертер. Поскольку мое приложение находится поверх шва, я пробовал все возможные комбинации, чтобы сделать это швом. В итоге мой сервер выключается. Так что вы можете понять :-S - person Kowser; 01.09.2011

Вот что у меня получилось в итоге: Seam: Создание пользовательский конвертер

person Kowser    schedule 08.09.2011