【问题标题】:JSF 2.0 object value in h:inputHidden?h:inputHidden 中的 JSF 2.0 对象值?
【发布时间】:2012-11-12 08:42:38
【问题描述】:

我对 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

所以我想我做错了什么。

谁能给我一些建议?

非常感谢。

【问题讨论】:

标签: java jsf-2


【解决方案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;
    }
}

【讨论】:

  • 提示:对于 SelectOneMenu,您可以查看 OmniFaces 转换器,它可以自动从字符串转换为对象,而无需使用昂贵的 DAO 调用(它基于已经存在的列表来呈现菜单)。
猜你喜欢
  • 2015-05-24
  • 1970-01-01
  • 2013-11-12
  • 2011-05-30
  • 2012-01-26
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
相关资源
最近更新 更多