我在使用简单的primefaces组件时遇到了一些问题。我有一个p:对话框,里面有一个p:selectBooleanCheckbox:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<h:body>
<ui:composition template="/templates/template_geral.xhtml">
<ui:define name="page_content">
<h:form id="form">
<p:dataTable resizableColumns="true" var="infoAssinaturas" value="#{mBConsulta_assinaturas.listInfoAssinaturas}" id="infoAssinaturasList" editable="true" rendered="true">
<p:column headerText="Ações" style="width:3%">
<p:panelGrid columns="2" style=".ui-panelgrid td, .ui-panelgrid tr{border: none !important}">
<p:commandLink update=":form:infoAssinaturasEdit" oncomplete="PF('infoAssinaturas_editDialog').show()" title="Editar">
<h:outputText styleClass="ui-icon ui-icon-pencil" style="margin:0 auto;" />
<f:setPropertyActionListener value="#{infoAssinaturas}" target="#{mBConsulta_assinaturas.selectedInfoAssinatura}" />
</p:commandLink>
</p:panelGrid>
</p:column>
</p:dataTable>
<p:outputPanel id="infoAssinaturasEdit" style="text-align:center;">
<p:dialog widgetVar="infoAssinaturas_editDialog" header="Editar: #{mBConsulta_assinaturas.selectedInfoAssinatura.nomeevento}" resizable="false" modal="true" appendToBody="true">
<h:panelGrid columns="2" style="margin-bottom:10px">
<h:outputLabel value="Habilitada: *" for="habilitada" />
<p:selectBooleanCheckbox value="#{mBConsulta_assinaturas.selectedInfoAssinatura.habilitadaBoolean}" />
</h:panelGrid>
<p:commandButton value="Salvar" styleClass="ui-priority-primary" icon="ui-icon-disk"/>
<p:commandButton value="Cancelar" styleClass="ui-priority-primary" icon="ui-icon-cancel"/>
</p:dialog>
</p:outputPanel>
</h:form>
</ui:define>
</ui:composition>
</h:body>
当我运行应用程序并尝试打开页面时,我收到以下异常:javax.el.PropertyNotFoundException:Target Unreachable,'selectedInfoAssinatura'返回null。
奇怪的是,当我用p:inputTextBox替换p:selectBooleanCheckBox时,它可以很好地工作,并且没有抛出任何异常。我想念selectBooleanCheckBox组件吗?
我的MB:
public class MBConsulta_assinaturas implements Serializable {
private List<InfoAssinaturas> listInfoAssinaturas;
private InfoAssinaturasFacade infoAssinaturasFacade;
private InfoAssinaturas selectedInfoAssinatura;
public MBConsulta_assinaturas() {
infoAssinaturasFacade = new InfoAssinaturasFacade();
listInfoAssinaturas = new ArrayList<InfoAssinaturas>();
listInfoAssinaturas = infoAssinaturasFacade.listAll();
}
public List<InfoAssinaturas> getListInfoAssinaturas() {
return listInfoAssinaturas;
}
public InfoAssinaturasFacade getInfoAssinaturasFacade() {
return infoAssinaturasFacade;
}
public void setListInfoAssinaturas(List<InfoAssinaturas> listInfoAssinaturas) {
this.listInfoAssinaturas = listInfoAssinaturas;
}
public void setInfoAssinaturasFacade(InfoAssinaturasFacade infoAssinaturasFacade) {
this.infoAssinaturasFacade = infoAssinaturasFacade;
}
public InfoAssinaturas getSelectedInfoAssinatura() {
return selectedInfoAssinatura;
}
public void setSelectedInfoAssinatura(InfoAssinaturas selectedInfoAssinatura) {
this.selectedInfoAssinatura = selectedInfoAssinatura;
}
}
我的模特:
public class InfoAssinaturas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nomeevento;
private short risco;
private String descricao;
private short habilitada;
public InfoAssinaturas() {
}
public InfoAssinaturas(Integer id) {
this.id = id;
}
public InfoAssinaturas(Integer id, String nomeevento, short risco, String descricao, short habilitada) {
this.id = id;
this.nomeevento = nomeevento;
this.risco = risco;
this.descricao = descricao;
this.habilitada = habilitada;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNomeevento() {
return nomeevento;
}
public void setNomeevento(String nomeevento) {
this.nomeevento = nomeevento;
}
public short getRisco() {
return risco;
}
public void setRisco(short risco) {
this.risco = risco;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public short getHabilitada() {
return habilitada;
}
public String getHabilitadaString() {
FacesContext ctx = FacesContext.getCurrentInstance();
Application app = ctx.getApplication();
ResourceBundle bundle = app.getResourceBundle(ctx, "labels");
if (this.getHabilitada() == 0) {
return bundle.getString("NAO");
} else {
return bundle.getString("SIM");
}
}
public Boolean getHabilitadaBoolean() {
if (this.getHabilitada() == 0) {
return false;
} else {
return true;
}
}
public void setHabilitadaBoolean(Boolean habilitada) {
if (habilitada) {
this.setHabilitada((short) 1);
} else {
this.setHabilitada((short) 0);
}
}
public void setHabilitada(short habilitada) {
this.habilitada = habilitada;
}
}