0

私は JSF 2.0 にまったく慣れていないので、これは非常に単純な質問かもしれません。

h:inputHidden を使用して、あるページから別のページに自己定義オブジェクトを渡したいので、request.getParameter("obj01").

オブジェクト全体を h:inputHidden の value 属性に渡しました。

ただし、次のエラーが発生します。

Cannot convert com.project01.obj.web.obj01@10562017 of type class java.lang.String to class com.project01.obj.web.obj01

だから私は何か悪いことをしたと思います。

誰かアドバイスをくれませんか?

どうもありがとうございました。

4

1 に答える 1

1

リクエストを介してのみ文字列を渡すことができます。しかし、それには解決策があります:

コンバーターを書きます。いくつかのコード例はここにあります。

http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/

編集:

たとえば、SelectOneMenu を介してオブジェクトを渡しました。

<h:selectOneMenu id="inputX" value="#{someBean.someObject}" converter="someConverter">
    <f:selectItems value="#{someBean.someObjectList}"/>
</h:selectOneMenu>

顔の設定にコンバーターを入れてください。

<converter>
    <description>Converter - X</description>
    <converter-id>someConverter</converter-id>
    <converter-class>de.package.company.SomeConverter</converter-class> 
</converter>

コンバータ:

public class SomeConverter implements Converter
{

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        if (value != null)
            return (YourBean) new YourBeanDAO().find(Long.parseLong(value));

        return null;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) throws ConverterException {

        if (arg2 != null && arg2 instanceof YourBean)
            return Long.toString(((YourBean) arg2).getId());

        return null;
    }
}
于 2012-11-12T08:54:30.450 に答える