nullpoInterpection @managedBean在Maven中
我的Labeldetailbean和Labelbean就像我的Maven项目一样。
package com.alper.bean.detail;
import com.alper.db.LabelOperations;
import com.alper.model.menu.Label;
import com.alper.util.CustomMessage;
import lombok.Getter;
import lombok.Setter;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
import java.util.List;
@ManagedBean
@ViewScoped
@Named
@Getter
@Setter
public class LabelDetailBean {
private List<Label> labels;
private Label label;
private LabelOperations labelOperations;
public LabelDetailBean() {
label = new Label();
labelOperations = new LabelOperations();
}
@PostConstruct
public void init() {
setLabels(labelOperations.listLabels());
}
public String saveLabel() {
// insertion check for label
boolean check = labelOperations.insertLabel(getLabel());
if (check) {
CustomMessage.addMessageInfo("Onaylandı", "Kullanıcı başarıyla eklendi");
setLabels(labelOperations.listLabels());
}else {
CustomMessage.addMessageError("Başarısız", "Ekleme işlemi başarısız oldu. Girdiğiniz kullanıcı adı veya e-posta daha önceden alınmış.");
}
return "/label-islemleri/index.xhtml";
}
public String deleteLabel(Label label){
long deletingLabelID = label.getLabelID();
if(labelOperations.deleteLabel(deletingLabelID)) {
setLabels(labelOperations.listLabels());
CustomMessage.addMessageInfo("Onaylandı", "Label başarıyla silindi.");
}else {
CustomMessage.addMessageError("Başarısız", "Silme işlemi başarısız oldu.");
}
return "/label-islemleri/index.xhtml?faces-redirect=true";
}
}
package com.alper.db;
import com.alper.model.menu.Label;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class LabelOperations extends DBConnection {
public List<Label> listLabels() {
List<Label> labelList = new ArrayList<>();
try (Connection connection = getConnection()){
try(PreparedStatement preparedStatement = connection.prepareStatement(
"select * from labels")) {
preparedStatement.executeQuery();
try(ResultSet resultSet = preparedStatement.getResultSet()) {
while (resultSet.next()) {
Label label = new Label();
// label infos
label.setLabelID(resultSet.getLong(1));
label.setLabelname(resultSet.getString(2));
// adding label
labelList.add(label);
}
}
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
return labelList;
}
public Boolean validateLabel(Label label){
return label.getLabelname().length() > 0;
}
public Boolean insertLabel(Label label) {
if(validateLabel(label)) {
try (Connection connection = getConnection()) {
try (PreparedStatement preparedStatement = connection.prepareStatement(
"insert into label (label) values (?)")) {
preparedStatement.setString(1, label.getLabelname());
preparedStatement.executeUpdate();
return true;
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
}
return false;
}
public Boolean deleteLabel(long deletingLabelID) {
try (Connection connection = getConnection()){
try(PreparedStatement preparedStatement = connection.prepareStatement(
"delete from labels where label_id = ?")) {
preparedStatement.setLong(1, deletingLabelID);
preparedStatement.executeUpdate();
return true;
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
return false;
}
}
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="../WEB-INF/template/template.xhtml">
<ui:param name="pageTitle" value="Label İşlemleri" />
<ui:param name="pageDescription" value="Label ekleme, güncelleme, silme işlemlerini yapabilirsiniz." />
<ui:define name="breadcrumb">
<ol class="breadcrumb">
<li>
<h:outputLink value="/">
<i class="fa fa-home" />
Anasayfa
</h:outputLink>
</li>
<li>
<h:outputLink value="/kullanici-islemleri/index.xhtml">
<i class="fa fa-user" />
Kullanıcı İşlemleri
</h:outputLink>
</li>
<li>
<h:outputLink value="/fotograf-islemleri/index.xhtml">
<i class="fa fa-cube" />
Fotoğraf İşlemleri
</h:outputLink>
</li>
<li class="active">
Label İşlemleri
</li>
</ol>
</ui:define>
<ui:define name="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<h:form id="labelForm">
<div class="box-header with-border">
<h3 class="box-title">Tüm Labelların Listesi</h3>
</div>
<div class="box-body">
<div class="ui-sm-12 ui-g-12 ui-g-nopad">
<div class="ui-sm-12 ui-g-6 ui-g-nopad">
<div class="ui-sm-12 ui-g-11">
<p:outputLabel for="ad" value="Label Adı *" />
</div>
<div class="ui-sm-12 ui-g-11" >
<p:inputText id="ad" value="#{labelBean.label.labelname}" required="true" requiredMessage="Label Adı Giriniz." />
<span class="help-block">
<p:message for="ad" />
</span>
</div>
</div>
</div>
<div class="box-tools">
<p:commandButton action="#{labelDetailBean.saveLabel()}"
value="Ekle" immediate="true" styleClass="btn btn-sm btn-success" icon="fa fa-plus" ajax="false" />
</div>
<p:dataTable var="label" value="#{labelDetailBean.labels}"
id="labelTable" tableStyleClass="table-hover" first="0" rows="20"
paginator="true" paginatorPosition="bottom"
emptyMessage="Eklenmiş Label Bulunamadı!">
<p:column headerText="Fotoğraf ID" sortBy="#{label.labelID}">
<h:outputText value="#{label.labelID}" />
</p:column>
<p:column headerText="Ekleyeceğiniz Label" sortBy="#{label.labelname}">
<h:outputText value="#{label.labelname}" />
</p:column>
<p:column headerText="İşlem">
<!--<p:commandButton action="#{labelDetailBean.updateLabel(label)}" value="Güncelle" styleClass="btn btn-sm btn-primary" icon="fa fa-edit" ajax="false"/>
-->
<p:growl id="message" showDetail="true"/>
<p:commandButton value="Sil" update="message" action="#{labelDetailBean.deleteLabel(label)}" styleClass="btn btn-sm btn-danger" icon="fa fa-remove">
<p:confirm header="Onaylama" message="Labeli silmek istediğinize emin misiniz?" icon="pi pi-info-circle"/>
</p:commandButton>
</p:column>
</p:dataTable>
</div>
</h:form>
</div>
</div>
</div>
</ui:define>
</ui:composition>
在我的XHTML文件中,我使用InputText来填充LabelBeanDetail.label.labelname变量,然后使用Savelabel()函数将此信息发送到InsertLabel()SQL查询函数以添加到数据库中。但是,我面对
[ {errorDetails, #{labelDetailBean.saveLabel()}: java.lang.NullPointerException} ]
我缺少什么?我试图解决这个问题很长时间,我尝试了不同的事情,没有任何改变。
经过乔纳森·S·费舍尔(Jonathan S. Fisher)的建议,我将printstacktrace版本添加到我的代码中:
javax.faces.FacesException: #{labelDetailBean.saveLabel()}: java.lang.NullPointerException at
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86) at
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)<br/> at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:111)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)<br/> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at
com.alper.filter.SessionFilter.doFilter(SessionFilter.java:40) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)```
My LabelDetailBean and LabelBean are like that in my Maven project.
package com.alper.bean.detail;
import com.alper.db.LabelOperations;
import com.alper.model.menu.Label;
import com.alper.util.CustomMessage;
import lombok.Getter;
import lombok.Setter;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
import java.util.List;
@ManagedBean
@ViewScoped
@Named
@Getter
@Setter
public class LabelDetailBean {
private List<Label> labels;
private Label label;
private LabelOperations labelOperations;
public LabelDetailBean() {
label = new Label();
labelOperations = new LabelOperations();
}
@PostConstruct
public void init() {
setLabels(labelOperations.listLabels());
}
public String saveLabel() {
// insertion check for label
boolean check = labelOperations.insertLabel(getLabel());
if (check) {
CustomMessage.addMessageInfo("Onaylandı", "Kullanıcı başarıyla eklendi");
setLabels(labelOperations.listLabels());
}else {
CustomMessage.addMessageError("Başarısız", "Ekleme işlemi başarısız oldu. Girdiğiniz kullanıcı adı veya e-posta daha önceden alınmış.");
}
return "/label-islemleri/index.xhtml";
}
public String deleteLabel(Label label){
long deletingLabelID = label.getLabelID();
if(labelOperations.deleteLabel(deletingLabelID)) {
setLabels(labelOperations.listLabels());
CustomMessage.addMessageInfo("Onaylandı", "Label başarıyla silindi.");
}else {
CustomMessage.addMessageError("Başarısız", "Silme işlemi başarısız oldu.");
}
return "/label-islemleri/index.xhtml?faces-redirect=true";
}
}
package com.alper.db;
import com.alper.model.menu.Label;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class LabelOperations extends DBConnection {
public List<Label> listLabels() {
List<Label> labelList = new ArrayList<>();
try (Connection connection = getConnection()){
try(PreparedStatement preparedStatement = connection.prepareStatement(
"select * from labels")) {
preparedStatement.executeQuery();
try(ResultSet resultSet = preparedStatement.getResultSet()) {
while (resultSet.next()) {
Label label = new Label();
// label infos
label.setLabelID(resultSet.getLong(1));
label.setLabelname(resultSet.getString(2));
// adding label
labelList.add(label);
}
}
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
return labelList;
}
public Boolean validateLabel(Label label){
return label.getLabelname().length() > 0;
}
public Boolean insertLabel(Label label) {
if(validateLabel(label)) {
try (Connection connection = getConnection()) {
try (PreparedStatement preparedStatement = connection.prepareStatement(
"insert into label (label) values (?)")) {
preparedStatement.setString(1, label.getLabelname());
preparedStatement.executeUpdate();
return true;
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
}
return false;
}
public Boolean deleteLabel(long deletingLabelID) {
try (Connection connection = getConnection()){
try(PreparedStatement preparedStatement = connection.prepareStatement(
"delete from labels where label_id = ?")) {
preparedStatement.setLong(1, deletingLabelID);
preparedStatement.executeUpdate();
return true;
}
} catch (Throwable e) {
e.printStackTrace();
e.getMessage();
}
return false;
}
}
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="../WEB-INF/template/template.xhtml">
<ui:param name="pageTitle" value="Label İşlemleri" />
<ui:param name="pageDescription" value="Label ekleme, güncelleme, silme işlemlerini yapabilirsiniz." />
<ui:define name="breadcrumb">
<ol class="breadcrumb">
<li>
<h:outputLink value="/">
<i class="fa fa-home" />
Anasayfa
</h:outputLink>
</li>
<li>
<h:outputLink value="/kullanici-islemleri/index.xhtml">
<i class="fa fa-user" />
Kullanıcı İşlemleri
</h:outputLink>
</li>
<li>
<h:outputLink value="/fotograf-islemleri/index.xhtml">
<i class="fa fa-cube" />
Fotoğraf İşlemleri
</h:outputLink>
</li>
<li class="active">
Label İşlemleri
</li>
</ol>
</ui:define>
<ui:define name="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<h:form id="labelForm">
<div class="box-header with-border">
<h3 class="box-title">Tüm Labelların Listesi</h3>
</div>
<div class="box-body">
<div class="ui-sm-12 ui-g-12 ui-g-nopad">
<div class="ui-sm-12 ui-g-6 ui-g-nopad">
<div class="ui-sm-12 ui-g-11">
<p:outputLabel for="ad" value="Label Adı *" />
</div>
<div class="ui-sm-12 ui-g-11" >
<p:inputText id="ad" value="#{labelBean.label.labelname}" required="true" requiredMessage="Label Adı Giriniz." />
<span class="help-block">
<p:message for="ad" />
</span>
</div>
</div>
</div>
<div class="box-tools">
<p:commandButton action="#{labelDetailBean.saveLabel()}"
value="Ekle" immediate="true" styleClass="btn btn-sm btn-success" icon="fa fa-plus" ajax="false" />
</div>
<p:dataTable var="label" value="#{labelDetailBean.labels}"
id="labelTable" tableStyleClass="table-hover" first="0" rows="20"
paginator="true" paginatorPosition="bottom"
emptyMessage="Eklenmiş Label Bulunamadı!">
<p:column headerText="Fotoğraf ID" sortBy="#{label.labelID}">
<h:outputText value="#{label.labelID}" />
</p:column>
<p:column headerText="Ekleyeceğiniz Label" sortBy="#{label.labelname}">
<h:outputText value="#{label.labelname}" />
</p:column>
<p:column headerText="İşlem">
<!--<p:commandButton action="#{labelDetailBean.updateLabel(label)}" value="Güncelle" styleClass="btn btn-sm btn-primary" icon="fa fa-edit" ajax="false"/>
-->
<p:growl id="message" showDetail="true"/>
<p:commandButton value="Sil" update="message" action="#{labelDetailBean.deleteLabel(label)}" styleClass="btn btn-sm btn-danger" icon="fa fa-remove">
<p:confirm header="Onaylama" message="Labeli silmek istediğinize emin misiniz?" icon="pi pi-info-circle"/>
</p:commandButton>
</p:column>
</p:dataTable>
</div>
</h:form>
</div>
</div>
</div>
</ui:define>
</ui:composition>
In my xhtml file, I am using inputText to fill labelBeanDetail.label.labelname variable, then using saveLabel() function to send this information to insertLabel() sql query function to add into database. However, I am facing with
[ {errorDetails, #{labelDetailBean.saveLabel()}: java.lang.NullPointerException} ]
What am I missing? I am trying to solve this for a long time, I have tried different things, nothing changed.
After the advice given by Jonathan S. Fisher, I added printStackTrace version to my code:
javax.faces.FacesException: #{labelDetailBean.saveLabel()}: java.lang.NullPointerException at
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86) at
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)<br/> at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:111)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)<br/> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at
com.alper.filter.SessionFilter.doFilter(SessionFilter.java:40) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)```
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论