Ошибка преобразования сущности JSF: расширенное значение параметра «Ошибка преобразования» для «нулевого конвертера» - PullRequest
3 голосов
/ 21 августа 2011

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

  • Выберите предложение из окна предложения
  • Тогда сохраните мою форму
  • Возникает ошибка проверки: 1010 *.

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

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

Вот мой 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+"%");
    }

}

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Вот что я в итоге придумал: Шов: создание собственного конвертера

1 голос
/ 28 августа 2011

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

value="#{lcInfo.itemIndentMastBean}",

на

  value="#{lcInfo.someString}",

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

...