繁体   English   中英

JSF 2 FacesConverter不适用于复合组件

JSF 2 FacesConverter doesn't work with composite component

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个简单的复合组件,该组件必须使用与h:messages关联的h:selectManyListbox进行渲染。 问题在于使用Faces Converter类。 它似乎无法使用(仅在组件代码中使用)。

复合组件代码:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:composite="http://java.sun.com/jsf/composite">

<!-- INTERFACE -->
<composite:interface>
    <composite:attribute name="description" required="true" />
    <composite:attribute name="fieldValue" required="true" />
    <composite:attribute name="idc" required="true" />
    <composite:attribute name="size" required="true" />
</composite:interface>

<!-- IMPLEMENTATION -->
<composite:implementation>
    <tr>
        <td nowrap="nowrap">
           <h:outputText value="#{cc.attrs.description}" />
        </td>
        <td>
           <h:selectManyListbox 
                id="#{cc.attrs.idc}" 
                size="#{cc.attrs.size}"
                value="#{cc.attrs.fieldValue}">                 
            <composite:insertChildren />
           </h:selectManyListbox>
        </td>
        <td>
           <h:message for="#{cc.attrs.idc}" />
        </td>
    </tr>
</composite:implementation>
</html>

当我在sample.xhtml页面上使用它时(如下所示),我得到“验证错误:值无效”。 .....

但是当在同一页面上时,我将代码如下:

<tr>
    <td><h:outputText value="Plugins" /></td>
    <td>
         <h:selectManyListbox 
            id="plugins"
            value="#{bean.currentPlugins}" 
                   size="6">
        <f:selectItems value="#{bean.availablePlugins}" />
        </h:selectManyListbox>
    </td>
    <td><h:message for="plugins" /></td>
</tr>

一切顺利。

托管bean“ bean”类为

@ManagedBean
@SessionScoped
public class Bean extends GenericManagedBean
        implements Serializable {
   ElementClass[] currentPlugins;

    // getter & setter for currentPlugins
    // ...

   public List<ElementClass> getAvailablePlugins() {
       // ..  some code
       return list;
   }
}

和ElementClass是

public class ElementClass extends GenericEntity implements Serializable {

    private static final long serialVersionUID = 9159873495276902436L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Integer id;

    // other fields
    // ...

    // getters & setters
    // ...

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        if (!(object instanceof ElementClass)) {
            return false;
        }
        ElementClass other = (ElementClass) object;
        if ((this.id == null && other.id != null)
                || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }
}

对于ElementClass,我有转换器类

@FacesConverter(forClass = ElementClass.class)
public class ElementClassConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uiComponent,
            String elemId) {

        if (!StringUtils.isEmpty(elemId)) {
            // this code gets ElementClass object entity from database
            ApplicationBean applicationBean = JSFHelper
                    .findBean("applicationBean");
            return applicationBean.getService()
                    .findElementClassById(
                            Integer.parseInt(elemId));
        } else {
            return null;
        }
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uiComponent,
            Object elem) {
        return elem != null ? ((ElementClass ) elem).getId()
                .toString() : "";
    }
}

和标准的问题:我在做什么错? 我认为这是我缺乏知识,而不是jsf实现错误。 我使用JBoss 7.1.1 AS以及与其绑定的所有东西+ RichFaces 4。

问题暂未有回复.您可以查看右边的相关问题.
4 f:ajax侦听器,其参数不适用于复合组件

当我尝试在复合组件内部传递f:ajax ,我所有的侦听器参数都解析为null。 当然,我已经将客户端行为添加到了这样的复合组件中 在模糊事件上调用了listener方法,但是我的参数“ field”和“ paragraph”始终为空值。 我认为无法从复合组件访问变量。 ...

5 包含div用于JSF复合组件

我的应用程序中有许多复合组件,有时我需要整体引用这些组件。 默认情况下,复合组件不会在其子组件上生成任何额外的标记,因此,如果您为复合组件提供id属性,它只会将该ID附加到生成的子组件id上。 我想通过id引用整个组件(即在jquery操作中使用)。 JSF组件不允许在id属性中使用EL, ...

6 用于MultilingualString对象的JSF复合组件

我正在编写一个需要国际化的JSF应用程序。 为此,我创建了一个MultilingualString: 现在,有多种形式需要填充MultilingualString,并且每次我需要将这样的对象放入表单中时都重复ac:forEach循环是非常丑陋的。 所以我听说了JSF Composit ...

7 用于jQuery的JSF复合组件ID

我想在jsf中编写一个复合组件,并通过jquery添加一些功能。 小例子:我的复合组件定义如下: 并会导致如下所示: 如您所见,jquery获取了错误的ID。 这是因为对#{cc.attrs.id}的评估似乎发生在不同的点。 如何获得可预测的ID或解决方法? ...

8 JSF复合组件

我正在尝试创建一个复合组件,以便在我的Seam应用程序中使用,而我遇到了最简单的“hello,world”组件的问题。 我在{jboss deploy} /application.ear/application.war/resources/greet中放置了一个名为hello.xhtml的 ...

10 JSF复合组件验证

我想创建复合组件并将一些验证器附加到其子组件,但是我希望验证消息附加到复合组件,而不是其子组件。 在使用复合组件的页面中,我想要这样的东西: 现在它不起作用了,因为消息是针对组件的子对象的,而不是针对复合组件本身的。 如何制作整个组件? 甚至更好的是,我想向复合组件添加验证 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM