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