JSF列表取决于返回nullPointer的选定值



在我的jsf页面中,在一个对话框中,我有一个EntityB的列表,它取决于数据表中所选的EntityA。当我第一次加载页面时,它会给我nullPpointer异常,因为一开始没有选择任何内容。有人能告诉我如何防止这种情况吗?

编辑:我在链接中添加了一个打开对话框的actionlistener得到这个错误:

无法将DemandesDocsAdministratif类型DemandesDoc管理转换为类javax.faces.event.ActionEvent

JSF:

<p:commandLink value="#{demande.idDemandeDocAdministratif}"
oncomplete="PF('dlg2').show()" process="@this"
update=":form:pg" actionListener="#{gestionDemandesMB.fillEntityB}">
<f:setPropertyActionListener
target="#{gestionDemandesMB.SelectedEntityA}" value="#{demande}" 
/>
</p:commandLink>
<form>
<datatable>
</datatable>
<p:dialog>
<p:selectOneMenu id="Signataires"
value="#{gestionDemandesMB.entityB}">
<f:selectItems value="#{gestionDemandesMB.listEntityB}"
var="sign" itemLabel="#{sign.libRole}"
itemValue="#{sign.idPoste}" />
</p:selectOneMenu>
</p:dialog>
</form>

Bean:

public List<EntityA> getListEntityB() {
if ( selectedentityA != null ){
return entityBService.ListByentityA(selectedEntityA)
; } else {
return Collections.emptyList() ; }

我现在正在合作的Bean监听器:

public void fillSignataires(ActionEvent event)
{
listB = entityBService.ListByentityA(selectedEntityA)
signaRender = true ;
}

这是实体B列表的getter,我正在寻找一种方法,要么得到一个空列表,要么只在打开对话框时调用。

在填充对象之前,可以使用rendered="#{not empty bean.list}"来阻止selectOnMenu的渲染。

您还可以添加一个带有"选择";label和空itemValue,例如itemValue="&";。顺便说一句,永远不要有一个空列表,列表不应该是空的,但它可以是空的。这是最好的做法。因此,您可以在bean的后构造中将listEntityB初始化为空列表。

<p:selectOneMenu id="Signataires"
value="#{gestionDemandesMB.entityB}">
<f:selectItem  itemLabel="Select" itemValue="" />
var="sign" itemLabel="#{sign.libRole}"
<f:selectItems value="#{gestionDemandesMB.listEntityB}"
var="sign" itemLabel="#{sign.libRole}"
itemValue="#{sign.idPoste}" />
</p:selectOneMenu>

相关内容

  • 没有找到相关文章

最新更新