リクエストを介してのみ文字列を渡すことができます。しかし、それには解決策があります:
コンバーターを書きます。いくつかのコード例はここにあります。
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;
}
}