我正在使用 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;
}
Managed Bean 的作用域是视图。
当我单击带有图标的命令链接时,将调用 setSelectedAspect 方法,但 selectedAspect 参数为空。
我需要实现的是在单击 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。
我究竟做错了什么?我错过了什么吗?