Java 使用PrimeFaces从SelectionMenu获取值

Java 使用PrimeFaces从SelectionMenu获取值,java,jsf,Java,Jsf,在下面的xhtml页面中,我必须获取一些用于填充DB表的值。问题是选择菜单不起作用。实际上,选择的值是从数据库中选择并显示的,但当我使用按钮时,不会获取这些值: 添加默认包 姓名: 地点: 显示的图像为: bean页面: package beans; import java.util.ArrayList; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.faces.bean.Manage

在下面的xhtml页面中,我必须获取一些用于填充DB表的值。问题是选择菜单不起作用。实际上,选择的值是从数据库中选择并显示的,但当我使用按钮时,不会获取这些值:


添加默认包
姓名:
地点:
显示的图像为:

bean页面:

package beans;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import elementManagement.ElementMgr;
import elementManagementDTO.ElementDTO;
import DefaultPackageManagement.DefaultPackageMgr;
import DefaultPackageManagementDTO.DefaultPackageDTO;


@ManagedBean(name="addDefaultPackageBean") //come viene richiamato 
@RequestScoped
public class AddDefaultPackageBean {

    @EJB
    private DefaultPackageMgr defpackMgr;
    private DefaultPackageDTO defpackDTO;
    private ArrayList<ElementDTO> elelisfly;
    private ArrayList<ElementDTO> elelishotel;
    private String nameFlies;
    private String nameHotels;
    @EJB
    private ElementMgr elemMgr;



    public AddDefaultPackageBean() {


        defpackDTO = new DefaultPackageDTO();
        defpackDTO.setElem(new ArrayList<ElementDTO>());

    }
    @PostConstruct
    public void init()
    {
        setElelisfly(elemMgr.getAllFlights());
        setElelishotel(elemMgr.getAllHotels()); 
    }





    public String add() {

        this.AssignElemFlyFromSelection();
        this.AssignElemHotelFromSelection();
        defpackMgr.save(defpackDTO);
        return "/employee/index?faces-redirect=true";
    }



    public DefaultPackageDTO getDefpackDTO() {
        return defpackDTO;
    }
    public void setDefpackDTO(DefaultPackageDTO defpackDTO) {
        this.defpackDTO = defpackDTO;
    }
    public ArrayList<ElementDTO> getElelisfly() {
        return elelisfly;
    }
    public void setElelisfly(ArrayList<ElementDTO> elelisfly) {
        this.elelisfly = elelisfly;
    }
    public ArrayList<ElementDTO> getElelishotel() {
        return elelishotel;
    }
    public void setElelishotel(ArrayList<ElementDTO> elelishotel) {
        this.elelishotel = elelishotel;
    }
    public String getNameFlies() {
        return nameFlies;
    }
    public void setNameFlies(String nameFlies) {
        this.nameFlies = nameFlies;
    }
    public String getNameHotels() {
        return nameHotels;
    }
    public void setNameHotels(String nameHotels) {
        this.nameHotels = nameHotels;
    }

    private void AssignElemFlyFromSelection()
    {
        for (ElementDTO elem:this.elelisfly)
        {
            if(elem.getLocation()==this.nameFlies)
            {
                this.defpackDTO.getElem().add(elem);
            }
        }
    }

    private void AssignElemHotelFromSelection()
    {
        for (ElementDTO elem:this.elelishotel)
        {
            if(elem.getLocation()==this.nameHotels)
            {
                this.defpackDTO.getElem().add(elem);
            }
        }
    }



}
packagebean;
导入java.util.ArrayList;
导入javax.annotation.PostConstruct;
导入javax.ejb.ejb;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.RequestScope;
导入elementManagement.ElementMgr;
导入elementManagementDTO.ElementDTO;
导入DefaultPackageManager.DefaultPackageMgr;
导入DefaultPackageManagementDTO.DefaultPackageDTO;
@ManagedBean(name=“addDefaultPackageBean”)///come viene richiamato
@请求范围
公共类AddDefaultPackageBean{
@EJB
私有DefaultPackageMgr defpackMgr;
专用DefaultPackageDTO defpackDTO;
私人ArrayList elelisfly;
私人ArrayList elelishotel;
私有字符串;
私人酒店;
@EJB
私人部门经理elemMgr;
public AddDefaultPackageBean(){
defpackDTO=新的DefaultPackageDTO();
setElem(新的ArrayList());
}
@施工后
公共void init()
{
setElelisfly(elemMgr.getAllFlights());
setElelishotel(elemMgr.getAllHotels());
}
公共字符串add(){
this.AssignElemFlyFromSelection();
this.AssignElemHotelFromSelection();
defpackMgr.save(defpackDTO);
return“/employee/index?faces redirect=true”;
}
public DefaultPackageDTO getDefpackDTO(){
返回defpackDTO;
}
public void setDefpackDTO(DefaultPackageDTO defpackDTO){
this.defpackDTO=defpackDTO;
}
公共数组列表getElelisfly(){
返回elelisfly;
}
公共void setElelisfly(ArrayList elelisfly){
this.elelisfly=elelisfly;
}
公共阵列列表getElelishotel(){
返回埃利酒店;
}
公共空间塞特列酒店(ArrayList elelishotel){
this.elelishotel=elelishotel;
}
公共字符串getNameFlies(){
返回名蝇;
}
公共void setNameFlies(字符串nameFlies){
this.namefiles=namefiles;
}
公共字符串getNameHotels(){
返回酒店;
}
公共void setNameHotels(字符串nameHotels){
this.nameHotels=nameHotels;
}
私有无效AssignElemFlyFromSelection()
{
for(ElementDTO elem:this.elelisfly)
{
if(elem.getLocation()==this.namelies)
{
this.defpackDTO.getElem().add(elem);
}
}
}
私有无效AssignElemHotelFromSelection()
{
对于(ElementDTO elem:this.elelishotel)
{
if(elem.getLocation()==this.nameHotels)
{
this.defpackDTO.getElem().add(elem);
}
}
}
}

谢谢你的帮助

将进程添加到命令按钮

像这样:


您正在使用
=
操作符而不是
.equals()
方法比较Java
字符串
对象。这会导致执行对象引用之间的比较,而不是执行
String
比较

elem.getLocation()==this.nameFlies

把它们换成

另请参见:

仍然没有。当我按“添加”时,什么也没有发生。可能是我把选择菜单中的值传递给bean时出错了。我刚开始使用Primefaces。
elem.getLocation()==this.nameHotels