Jsf 为什么使用同一个变量<;p:选择布尔复选框/>;抛出NPE,同时<;h:选择布尔复选框/>;不';T
我有下一个代码片段,它与Jsf 为什么使用同一个变量<;p:选择布尔复选框/>;抛出NPE,同时<;h:选择布尔复选框/>;不';T,jsf,jsf-2,primefaces,nullpointerexception,components,Jsf,Jsf 2,Primefaces,Nullpointerexception,Components,我有下一个代码片段,它与的预期效果一样,如果我使用,它将失败: 变量、它们的值、方法等都是可以的,所以我想没有必要提供它的代码,但是如果您愿意,您可以检查我前面的问题,以获得所有必要代码的更多细节 所以,问题是:为什么在同一个变量上抛出NPE,而不抛出NPE?如何解决这个问题?我想使用PrimeFaces组件 谢谢大家! //编辑 HomeBean.java: import com.infostroy.adminportal.bean.BaseBean; import com.infostro
的预期效果一样,如果我使用
,它将失败:
变量、它们的值、方法等都是可以的,所以我想没有必要提供它的代码,但是如果您愿意,您可以检查我前面的问题,以获得所有必要代码的更多细节
所以,问题是:为什么在同一个变量上
抛出NPE,而
不抛出NPE?如何解决这个问题?我想使用PrimeFaces组件
谢谢大家!
//编辑
HomeBean.java:
import com.infostroy.adminportal.bean.BaseBean;
import com.infostroy.adminportal.model.Application;
import com.infostroy.adminportal.model.Computer;
import com.infostroy.adminportal.model.User;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import javax.annotation.PostConstruct;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("session")
public class HomeBean extends BaseBean {
private static final String editUserBtn = "tab:form1:editUser";
private static final String deleteUserBtn = "tab:form1:deleteUser";
private static final String editCompBtn = "tab:form2:editComp";
private static final String deleteCompBtn = "tab:form2:deleteComp";
private static final String editAppBtn = "tab:form3:editApp";
private static final String deleteAppBtn = "tab:form3:deleteApp";
private List<User> users;
private List<Computer> computers;
private List<Application> applications;
private User selectedUser, newUser;
private Computer selectedComputer, newComputer;
private Application selectedApplication, newApplication;
private String deleteUserMsg, deleteCompMsg, deleteAppMsg;
private RequestContext rc;
@PostConstruct
public void init() {
setUsers(hibernateDBManager.getAllUsers());
setComputers(hibernateDBManager.getAllComputers());
setApplications(hibernateDBManager.getAllApplications());
newUser = new User();
newComputer = new Computer();
newApplication = new Application();
rc = RequestContext.getCurrentInstance();
}
public void addUser() throws NoSuchAlgorithmException {
if (hibernateDBManager.insertUser(newUser)) {
users.add(newUser);
newUser = new User();
updateUserButtons();
}
}
public void editUser() throws NoSuchAlgorithmException {
if (hibernateDBManager.updateUser(selectedUser)) {
users.set(users.indexOf(selectedUser), selectedUser);
selectedUser = null;
updateUserButtons();
}
}
public void deleteUser() throws IOException {
if (selectedUser != null) {
if (hibernateDBManager.deleteUserById(selectedUser.getUserId()) > 0) {
users.remove(selectedUser);
selectedUser = null;
updateUserButtons();
}
}
}
public void addComputer() {
if (newComputer != null && hibernateDBManager.insertComputer(newComputer)) {
computers.add(newComputer);
newComputer = new Computer();
updateCompButtons();
}
}
public void editComputer() {
if (hibernateDBManager.updateComputer(selectedComputer)) {
computers.set(computers.indexOf(selectedComputer), selectedComputer);
selectedComputer = null;
updateCompButtons();
}
}
public void deleteComputer() {
if (selectedComputer != null) {
if (hibernateDBManager.deleteComputerById(selectedComputer.getComputerId()) > 0) {
computers.remove(selectedComputer);
selectedComputer = null;
updateCompButtons();
}
}
}
public void addApplication() {
if (newApplication != null && hibernateDBManager.insertApplication(newApplication)) {
applications.add(newApplication);
newApplication = new Application();
updateAppButtons();
}
}
public void editApplication() {
if (hibernateDBManager.updateApplication(selectedApplication)) {
applications.set(applications.indexOf(selectedApplication), selectedApplication);
selectedApplication = null;
updateAppButtons();
}
}
public void deleteApplication() {
if (selectedApplication != null) {
if (hibernateDBManager.deleteApplicationById(selectedApplication.getAppId()) > 0) {
applications.remove(selectedApplication);
selectedApplication = null;
updateAppButtons();
}
}
}
public void onUserRowSelect(SelectEvent event) {
setSelectedUser((User) event.getObject());
setDeleteUserMsg("Are you sure you want to delete user "
+ selectedUser.getFirstName() + " " + selectedUser.getLastName() + "?");
}
public void onCompRowSelect(SelectEvent event) {
setSelectedComputer((Computer) event.getObject());
deleteCompMsg = "Are you sure you want to delete computer "
+ selectedComputer.getComputerName()
+ " (" + selectedComputer.getIpAddress() + ") ?";
}
public void onAppRowSelect(SelectEvent event) {
setSelectedApplication((Application) event.getObject());
deleteAppMsg = "Are you sure you want to delete application "
+ selectedApplication.getAppName() + "?";
}
protected void updateUserButtons() {
rc.update(editUserBtn);
rc.update(deleteUserBtn);
}
protected void updateCompButtons() {
rc.update(editCompBtn);
rc.update(deleteCompBtn);
}
protected void updateAppButtons() {
rc.update(editAppBtn);
rc.update(deleteAppBtn);
}
public String getDeleteUserMsg() {
return deleteUserMsg;
}
public void setDeleteUserMsg(String deleteUserMsg) {
this.deleteUserMsg = deleteUserMsg;
}
public String getDeleteCompMsg() {
return deleteCompMsg;
}
public void setDeleteCompMsg(String deleteCompMsg) {
this.deleteCompMsg = deleteCompMsg;
}
public String getDeleteAppMsg() {
return deleteAppMsg;
}
public void setDeleteAppMsg(String deleteAppMsg) {
this.deleteAppMsg = deleteAppMsg;
}
//Other getters/setters
}
import com.infostroy.adminportal.bean.BaseBean;
导入com.infostroy.adminportal.model.Application;
导入com.infostroy.adminportal.model.Computer;
导入com.infostroy.adminportal.model.User;
导入java.io.IOException;
导入java.security.NoSuchAlgorithmException;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入org.primefaces.context.RequestContext;
导入org.primefaces.event.SelectEvent;
导入org.springframework.context.annotation.Scope;
导入org.springframework.stereotype.Component;
@组成部分
@范围(“会议”)
公共类HomeBean扩展了BaseBean{
私有静态最终字符串editUserBtn=“tab:form1:editUser”;
私有静态最终字符串deleteUserBtn=“tab:form1:deleteUser”;
私有静态最终字符串editCompBtn=“tab:form2:editComp”;
私有静态最终字符串deleteCompBtn=“tab:form2:deleteComp”;
私有静态最终字符串editAppBtn=“tab:form3:editApp”;
私有静态最终字符串deleteAppBtn=“tab:form3:deleteApp”;
私人名单用户;
私人名单计算机;
私人名单申请;
私人用户选择用户,新用户;
私人电脑选择电脑,新电脑;
私有应用程序选择应用程序、新应用程序;
私有字符串deleteUserMsg、deleteCompMsg、deleteAppMsg;
私有请求上下文rc;
@施工后
公共void init(){
setUsers(hibernateDBManager.getAllUsers());
setComputers(hibernateDBManager.getAllComputers());
setApplications(hibernateDBManager.getAllApplications());
newUser=newUser();
新计算机=新计算机();
newApplication=newApplication();
rc=RequestContext.getCurrentInstance();
}
public void addUser()引发NoSuchAlgorithmException{
if(休眠的bmanager.insertUser(新用户)){
users.add(newUser);
newUser=newUser();
updateUserButtons();
}
}
public void editUser()引发NoSuchAlgorithmException{
if(hibernateDBManager.updateUser(selectedUser)){
users.set(users.indexOf(selectedUser),selectedUser);
selectedUser=null;
updateUserButtons();
}
}
public void deleteUser()引发IOException{
如果(selectedUser!=null){
如果(hibernateDBManager.deleteUserById(selectedUser.getUserId())>0){
用户。删除(选择用户);
selectedUser=null;
updateUserButtons();
}
}
}
公共计算机(){
if(newComputer!=null&&hibernateDBManager.insertComputer(newComputer)){
计算机。添加(新计算机);
新计算机=新计算机();
updateCompButtons();
}
}
公共计算机(){
如果(hibernateDBManager.updateComputer(selectedComputer)){
computers.set(computers.indexOf(selectedComputer),selectedComputer);
selectedComputer=null;
updateCompButtons();
}
}
公共计算机(){
如果(selectedComputer!=null){
如果(hibernateDBManager.deleteComputerById(selectedComputer.getComputerId())>0){
计算机。删除(所选计算机);
selectedComputer=null;
updateCompButtons();
}
}
}
公共应用程序(){
if(newApplication!=null&&hibernateDBManager.insertApplication(newApplication)){
应用程序。添加(新应用程序);
newApplication=newApplication();
updateAppButtons();
}
}
公共应用程序(){
if(hibernateDBManager.updateApplication(selectedApplication)){
applications.set(applications.indexOf(selectedApplication),selectedApplication);
selectedApplication=null;
updateAppButtons();
}
}
公共应用程序(){
如果(selectedApplication!=空){
如果(hibernateDBManager.deleteApplicationById(selectedApplication.getAppId())>0){
应用程序。删除(选定的应用程序);
selectedApplication=null;
updateAppButtons();
}
}
}
公共无效onUserRowSelect(SelectEvent事件){
setSelectedUser((用户)event.getObject());
setDeleteUserMsg(“您确定要删除用户吗?”
+selectedUser.getFirstName()+“”+selectedUser.getLastName()+“?”;
}
public void onCompRowSelect(SelectEvent事件){
setSelectedComputer((计算机)事件.getObject());
deleteCompMsg=“是否确实要删除计算机?”
+selectedComputer.getComputerName()
+(“+selectedComputer.getIpAddress()+”);
}
Approwselect上的公共无效(SelectEvent事件){
setSelectedApplication((应用程序)event.getObject());
deleteAppMsg=“是否确实要删除应用程序?”
+selectedApplication.getAppName()+“?”;
}
受保护的void updateUserButtons(){
rc.update(editUserBtn);
rc.update(deleteUserBtn);
}
受保护的void updateCompButtons(){
rc.更新(editCompBtn);
rc.更新(删除compbt)
/pages/home.xhtml @424,149 value="#{homeBean.selectedApplication.licenseRequired}": Target Unreachable, 'selectedApplication' returned null
import com.infostroy.adminportal.bean.BaseBean;
import com.infostroy.adminportal.model.Application;
import com.infostroy.adminportal.model.Computer;
import com.infostroy.adminportal.model.User;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import javax.annotation.PostConstruct;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("session")
public class HomeBean extends BaseBean {
private static final String editUserBtn = "tab:form1:editUser";
private static final String deleteUserBtn = "tab:form1:deleteUser";
private static final String editCompBtn = "tab:form2:editComp";
private static final String deleteCompBtn = "tab:form2:deleteComp";
private static final String editAppBtn = "tab:form3:editApp";
private static final String deleteAppBtn = "tab:form3:deleteApp";
private List<User> users;
private List<Computer> computers;
private List<Application> applications;
private User selectedUser, newUser;
private Computer selectedComputer, newComputer;
private Application selectedApplication, newApplication;
private String deleteUserMsg, deleteCompMsg, deleteAppMsg;
private RequestContext rc;
@PostConstruct
public void init() {
setUsers(hibernateDBManager.getAllUsers());
setComputers(hibernateDBManager.getAllComputers());
setApplications(hibernateDBManager.getAllApplications());
newUser = new User();
newComputer = new Computer();
newApplication = new Application();
rc = RequestContext.getCurrentInstance();
}
public void addUser() throws NoSuchAlgorithmException {
if (hibernateDBManager.insertUser(newUser)) {
users.add(newUser);
newUser = new User();
updateUserButtons();
}
}
public void editUser() throws NoSuchAlgorithmException {
if (hibernateDBManager.updateUser(selectedUser)) {
users.set(users.indexOf(selectedUser), selectedUser);
selectedUser = null;
updateUserButtons();
}
}
public void deleteUser() throws IOException {
if (selectedUser != null) {
if (hibernateDBManager.deleteUserById(selectedUser.getUserId()) > 0) {
users.remove(selectedUser);
selectedUser = null;
updateUserButtons();
}
}
}
public void addComputer() {
if (newComputer != null && hibernateDBManager.insertComputer(newComputer)) {
computers.add(newComputer);
newComputer = new Computer();
updateCompButtons();
}
}
public void editComputer() {
if (hibernateDBManager.updateComputer(selectedComputer)) {
computers.set(computers.indexOf(selectedComputer), selectedComputer);
selectedComputer = null;
updateCompButtons();
}
}
public void deleteComputer() {
if (selectedComputer != null) {
if (hibernateDBManager.deleteComputerById(selectedComputer.getComputerId()) > 0) {
computers.remove(selectedComputer);
selectedComputer = null;
updateCompButtons();
}
}
}
public void addApplication() {
if (newApplication != null && hibernateDBManager.insertApplication(newApplication)) {
applications.add(newApplication);
newApplication = new Application();
updateAppButtons();
}
}
public void editApplication() {
if (hibernateDBManager.updateApplication(selectedApplication)) {
applications.set(applications.indexOf(selectedApplication), selectedApplication);
selectedApplication = null;
updateAppButtons();
}
}
public void deleteApplication() {
if (selectedApplication != null) {
if (hibernateDBManager.deleteApplicationById(selectedApplication.getAppId()) > 0) {
applications.remove(selectedApplication);
selectedApplication = null;
updateAppButtons();
}
}
}
public void onUserRowSelect(SelectEvent event) {
setSelectedUser((User) event.getObject());
setDeleteUserMsg("Are you sure you want to delete user "
+ selectedUser.getFirstName() + " " + selectedUser.getLastName() + "?");
}
public void onCompRowSelect(SelectEvent event) {
setSelectedComputer((Computer) event.getObject());
deleteCompMsg = "Are you sure you want to delete computer "
+ selectedComputer.getComputerName()
+ " (" + selectedComputer.getIpAddress() + ") ?";
}
public void onAppRowSelect(SelectEvent event) {
setSelectedApplication((Application) event.getObject());
deleteAppMsg = "Are you sure you want to delete application "
+ selectedApplication.getAppName() + "?";
}
protected void updateUserButtons() {
rc.update(editUserBtn);
rc.update(deleteUserBtn);
}
protected void updateCompButtons() {
rc.update(editCompBtn);
rc.update(deleteCompBtn);
}
protected void updateAppButtons() {
rc.update(editAppBtn);
rc.update(deleteAppBtn);
}
public String getDeleteUserMsg() {
return deleteUserMsg;
}
public void setDeleteUserMsg(String deleteUserMsg) {
this.deleteUserMsg = deleteUserMsg;
}
public String getDeleteCompMsg() {
return deleteCompMsg;
}
public void setDeleteCompMsg(String deleteCompMsg) {
this.deleteCompMsg = deleteCompMsg;
}
public String getDeleteAppMsg() {
return deleteAppMsg;
}
public void setDeleteAppMsg(String deleteAppMsg) {
this.deleteAppMsg = deleteAppMsg;
}
//Other getters/setters
}
/pages/home.xhtml @424,149
value="#{homeBean.selectedApplication.licenseRequired}":
Target Unreachable, 'selectedApplication' returned null