Primefaces中PickList中的commandLink将空值传递给托管bean

时间:2015-01-15 14:20:44

标签: jsf primefaces picklist

我正在使用Primefaces 5.0,在我的一个页面上,我有这个选项列表:

<h:form>
...
<p:pickList id="aspectPickList" styleClass="camsPickList" value="#{userAccountMB.aspects}" var="aspect" itemValue="#{aspect}"
    itemLabel="#{aspect.aspectName}" showSourceFilter="true" showTargetFilter="true" converter="appAspectConverter">

    <f:facet name="targetCaption">#{msg['createUser.userAspects.assignedAspects']}</f:facet>
    <f:facet name="sourceCaption">#{msg['createUser.userAspects.availableAspects']}</f:facet>

    <p:column>
        <h:outputText id="aspectName" value="#{aspect.aspectName}" />
        <p:tooltip id="toolTipAspectDescription" for="aspectName" value="#{aspect.description}" />
    </p:column>
    <p:column style="width:30px;">
    #{aspect}
    <p:commandLink process="@this" oncomplete="PF('aspectDetailsDialog').show();" actionListener="#{userAccountMB.setSelectedAspect(aspect)}">
            <p:graphicImage value="#{resource['images:questionmark_icon.jpg']}" />
        </p:commandLink>
    </p:column>

</p:pickList>
...
</h:form>

托管bean setSelectedAspect方法如下所示:

public void setSelectedAspect(AppAspect selectedAspect) {
    this.selectedAspect = selectedAspect;
}

管理Bean的范围是视图。

当我点击带有图标的命令链接时,会调用setSelectedAspect方法,但selectedAspect参数为null。

我需要实现的是在单击commandLink后显示AspectDetails对话框。 AspectDetails对话框包含有关先前所选方面的详细信息。

如果我以这种方式更新代码:

<p:column style="width:30px;">
#{aspect}
<p:commandLink process="@this" oncomplete="PF('aspectDetailsDialog').show();" actionListener="#{userAccountMB.selectAspect(aspect)}">
    <p:graphicImage value="#{resource['images:questionmark_icon.jpg']}" />
</p:commandLink>
</p:column>

#{aspect}指令正确显示对象签名:com.xyz.app.domain.AppAspect@69e1f7aa。

我做错了什么?我想念一下吗?

1 个答案:

答案 0 :(得分:0)

我有同样的错误,试试这个:

$ ember build --env production

控制器:

<p:pickList ...>
    <p:ajax event="select" listener="#{userAccountMB.selectAspectEvent}">
        <f:attribute name="aspectParam" value="#{aspect}" />
    </p:ajax>

    <f:facet ...>
    <f:facet ...>

    <p:column>...</p:column>

    <p:column style="width:30px;">
        <p:commandLink process="@this" oncomplete="PF('aspectDetailsDialog').show();">
            <p:graphicImage value="#{resource['images:questionmark_icon.jpg']}" />
        </p:commandLink>
    </p:column>
</p:pickList>

此致