Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF会话替换现有对象,同时将同一对象存储在不同的密钥中?_Java_Jakarta Ee_Jsf 2 - Fatal编程技术网

Java JSF会话替换现有对象,同时将同一对象存储在不同的密钥中?

Java JSF会话替换现有对象,同时将同一对象存储在不同的密钥中?,java,jakarta-ee,jsf-2,Java,Jakarta Ee,Jsf 2,我一直在用jsf开发web应用程序。我使用会话访问来自不同页面的对象。首先,我在登录时将用户对象存储在会话中,经过一些导航后,我想要另一个用户对象,因此,我在会话中以不同的键名存储该对象,但在存储第二个对象时,它将替换第一个对象,并且它具有不同的键名。我怎样才能纠正这个问题 package com.transcare.ace.bean; import java.io.Serializable; import javax.annotation.PostConstruct; import

我一直在用jsf开发web应用程序。我使用会话访问来自不同页面的对象。首先,我在登录时将用户对象存储在会话中,经过一些导航后,我想要另一个用户对象,因此,我在会话中以不同的键名存储该对象,但在存储第二个对象时,它将替换第一个对象,并且它具有不同的键名。我怎样才能纠正这个问题

    package com.transcare.ace.bean;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.transcare.ace.appBean.ChoiceBean;
import com.transcare.ace.dao.ServiceRequestDAO;
import com.transcare.ace.utils.DisplayMessage;
import com.transcare.ace.vo.Role;
import com.transcare.ace.vo.ServiceCategory;
import com.transcare.ace.vo.ServiceRequest;
import com.transcare.ace.vo.ServiceStatus;
import com.transcare.ace.vo.User;

@ManagedBean(name = "userRequest")
@ViewScoped
public class ServiceRequestAction implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @ManagedProperty(value = "#{selectedRequest}")
    private ServiceRequest service = null;

    @ManagedProperty(value = "#{user}")
    private User user = null;

    @ManagedProperty(value = "#{pickedUser}")
    private User pickedCustomer = null;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public ServiceRequest getService() {

        return service;
    }

    public void setService(ServiceRequest service) {
        this.service = service;
    }

    @ManagedProperty(value = "#{choices}")
    private ChoiceBean choices = null;

    public ChoiceBean getChoices() {
        return choices;
    }

    public void setChoices(ChoiceBean choices) {
        this.choices = choices;
    }

    public User getPickedCustomer() {
        return pickedCustomer;
    }

    public void setPickedCustomer(User pickedCustomer) {
        this.pickedCustomer = pickedCustomer;
    }

    @PostConstruct
    public void init() {
        /*
         * FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
         * .remove("role");
         * FacesContext.getCurrentInstance().getExternalContext(
         * ).getSessionMap() .remove("redirect");
         * FacesContext.getCurrentInstance
         * ().getExternalContext().getSessionMap() .remove("newCustomer");
         * FacesContext
         * .getCurrentInstance().getExternalContext().getSessionMap()
         * .remove("userRequest");
         */
        // System.out.println("session cleared!");
        service = new ServiceRequest();
        service.setCategory(new ServiceCategory());

        //pickedCustomer=(User) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("pickedUser");

        if (pickedCustomer != null) {
            service.setCustomer(pickedCustomer);
            System.out.println("Picked User value name is:"
                    + pickedCustomer.getFullName());
        } else {
            System.out.println("Picked User value is null.");
        }

        System.out.println("Session user");
        System.out.println("Logged User role is:"
                + user.getRole().getRoleName() +" and the user is: "+ user.getFullName());
    }
    @PreDestroy
    public void preDestroy(){
        System.out.println("View scope expires for user request!");
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("pickedUser");
    }

    public String addNewServiceRequestForUser() {
        System.out.println("main called");
        System.out.println(service.getTitle());
        System.out.println(service.getDescription());
        System.out.println(service.getCategory().getServiceCategoryId());
        ServiceStatus status = new ServiceStatus();
        status.setStatus("CREATED");
        status.setStatusId(1);
        service.setStatus(status);
        service.setCustomer(pickedCustomer);

        try {
            ServiceRequestDAO.getInstance().getrequestByUser(this);
            DisplayMessage.setInfoMessage("dashboardForm",
                    "You have created the request successfully!", "");
            return "success";
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DisplayMessage.setInfoMessage("",
                "Creating request is failed! Try again.", "");
        return null;
    }

    public String addNewServiceRequestWithPayment() {
        System.out.println("main called");
        System.out.println(service.getTitle());
        System.out.println(service.getDescription());
        System.out.println(service.getCategory().getServiceCategoryId());

        try {
            int key = ServiceRequestDAO.getInstance().getrequestByUser(this);
            if (key > 0) {
                DisplayMessage.setInfoMessage("dashboardForm",
                        "You have created the request successfully!", "");
                FacesContext.getCurrentInstance().getExternalContext()
                        .getSessionMap().put("redirect", "/pages/dashBoard");
                FacesContext.getCurrentInstance().getExternalContext()
                        .getSessionMap().put("serviceIdKey", key);
                System.out.println("Process success waiting to redirect!");
                // System.out.print(key);
                return "success";
            }
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DisplayMessage.setInfoMessage("",
                "Creating request is failed! Try again.", "");
        return null;
    }

    public String selectCustomer() {
        Role role = new Role();
        role.setInternal(false);
        role.setRoleId(1);
        role.setRoleName("Customer");
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
                .remove("pickedUser");
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
                .put("role", role);
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
                .put("redirect", "/pages/serviceRequest");
        /*
         * FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
         * .put("newCustomer", true);
         */
        return "success";
    }

    public String makePayment() {
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
                .put("redirect", "/pages/serviceRequest");
        return "success";
    }
}
这是我的托管bean,我正在使用pickedUser检索第二个用户对象,但它将替换user对象

采摘豆在这里

   package com.transcare.ace.bean;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.transcare.ace.dao.PickUserDAO;
import com.transcare.ace.vo.Role;
import com.transcare.ace.vo.User;

@ManagedBean
@ViewScoped
public class PickUser implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private List<User> users;

    @ManagedProperty(value = "#{role}")
    private Role role = null;

    @ManagedProperty(value="#{editRequest}")
    private EditRequest editRequest;

    @ManagedProperty(value = "#{redirect}")
    private String redirectTo = null;

    //@ManagedProperty(value = "#{newCustomer}")
    //private boolean newCustomer;  

    /*public boolean isNewCustomer() {
        return newCustomer;
    }

    public void setNewCustomer(boolean newCustomer) {
        this.newCustomer = newCustomer;
    }
*/
    public String getRedirectTo() {
        return redirectTo;
    }

    public void setRedirectTo(String redirectTo) {
        this.redirectTo = redirectTo;
    }

    @PostConstruct
    public void init() {
        users = new PickUserDAO().getAllUsers(role);
    }

    public EditRequest getEditRequest() {
        return editRequest;
    }

    public void setEditRequest(EditRequest editRequest) {
        this.editRequest = editRequest;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public String selectUser(User user) {
        /*if (role.isInternal()) {
            editRequest.getRequest().setSupplier(user);
        } else if (isNewCustomer()) {
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pickedUser", user);
        } else {
            ((ServiceRequest)FacesContext.getCurrentInstance()
            .getExternalContext().getSessionMap()
            .get("selectedService")).setCustomer(user);
            editRequest.getRequest().setCustomer(user);
        }*/
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pickedUser", user);
        return redirectTo;
    }
}
package com.transcare.ace.bean;
导入java.io.Serializable;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ManagedProperty;
导入javax.faces.bean.ViewScoped;
导入javax.faces.context.FacesContext;
导入com.transcare.ace.dao.PickUserDAO;
导入com.transcare.ace.vo.Role;
导入com.transcare.ace.vo.User;
@ManagedBean
@视域
公共类PickUser实现可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
私人名单用户;
@ManagedProperty(value=“#{role}”)
私有角色=null;
@ManagedProperty(value=“#{editRequest}”)
私有EditRequest EditRequest;
@ManagedProperty(value=“#{redirect}”)
私有字符串重定向到=null;
//@ManagedProperty(value=“#{newCustomer}”)
//私人客户;
/*公共布尔值isNewCustomer(){
返回新客户;
}
public void setNewCustomer(布尔值newCustomer){
this.newCustomer=newCustomer;
}
*/
公共字符串getRedirectTo(){
返回重定向到;
}
public void setRedirectTo(字符串redirectTo){
this.redirectTo=重定向到;
}
@施工后
公共void init(){
users=new PickUserDAO().getAllUsers(角色);
}
public EditRequest getEditRequest(){
返回编辑请求;
}
public void setEditRequest(EditRequest EditRequest){
this.editRequest=editRequest;
}
公共列表getUsers(){
返回用户;
}
公共用户(列表用户){
this.users=用户;
}
公共角色getRole(){
返回角色;
}
public void setRole(角色角色){
this.role=角色;
}
公共字符串selectUser(用户用户){
/*if(role.isInternal()){
editRequest.getRequest().setSupplier(用户);
}else if(isNewCustomer()){
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(“pickedUser”,用户);
}否则{
((ServiceRequest)FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap()
.get(“selectedService”).setCustomer(用户);
editRequest.getRequest().setCustomer(用户);
}*/
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(“pickedUser”,用户);
返回重定向到;
}
}
在这里,我使用pickedUser键对会话中的第二个用户进行排序 但它正在取代现有的


谢谢。

我修复了这个错误。我在登录时将用户对象存储到会话中,然后使用同一个用户对象来管理和显示用户列表。如果我选择任何一个用户,它将自动替换会话中的现有用户对象。多谢各位

{user}
已在会话中

我在这里使用了相同的对象

<ui:repeat var="user" value="#{users}">
..........
</ui:repeat>

..........
在这里,它会自动替换现有的。抱歉给你添麻烦了。
谢谢。

我修复了这个错误。我在登录时将用户对象存储到会话中,然后使用同一个用户对象来管理和显示用户列表。如果我选择任何一个用户,它将自动替换会话中的现有用户对象。多谢各位

{user}
已在会话中

我在这里使用了相同的对象

<ui:repeat var="user" value="#{users}">
..........
</ui:repeat>

..........
在这里,它会自动替换现有的。抱歉给你添麻烦了。 多谢各位