Bean不保存列表的状态gae

时间:2012-12-14 17:33:30

标签: google-app-engine jsf primefaces javabeans

当您按下命令按钮时,列表项应从一个列表添加到另一个列表。第一次,它工作正常,项目移动,但第二次新的替换以前添加,字符串字段工作正常。当它在本地运行时它可以正常工作,但不会上传。

@ManagedBean
@SessionScoped
public class SmsBean implements Serializable {

    private static final long serialVersionUID = 1L;



    private List<SelectItem> listOfDevices=new LinkedList<SelectItem>();
    private List<SelectItem> listOfSelectedDevices=new LinkedList<SelectItem>();
    private List<Device> toAdd=new LinkedList<Device>();
    private List<Device> toDelete=new LinkedList<Device>();



    public SmsBean(){
         List<Entity> entities = Datastore.getTotalDevices();
         if(entities!=null){
            for(Entity et :entities){
                Device device=new Device((String)et.getProperty(DEVICE_DEVICE_NAME_PROPERTY),(String)et.getProperty(DEVICE_MAIL_PROPERTY),(String)et.getProperty(DEVICE_REG_ID_PROPERTY));
                listOfDevices.add(new SelectItem(device));

            }
         }



    }



    public void addDevices(){
        int temp=0;
        for(Device dev:toAdd){
            for(int j=0;j<listOfDevices.size();j++){
                if(((Device)listOfDevices.get(j).getValue()).equals(dev)){
                    temp=j;
                    break;                  
                }
            }
            listOfSelectedDevices.add(listOfDevices.get(temp));
            listOfDevices.remove(temp);

        }
        toAdd.clear();
    }


    public void deleteDevices(){
        int temp=0;
        for(Device dev:toDelete){
            for(int j=0;j<listOfSelectedDevices.size();j++){
                if(((Device)listOfSelectedDevices.get(j).getValue()).equals(dev)){
                    temp=j;
                    break;      
                }
            }
            listOfDevices.add(listOfSelectedDevices.get(temp));
            listOfSelectedDevices.remove(temp);

        }
        toDelete.clear();
    }

}

查看

                        <h:panelGrid columns="4" style="height:100%">
                            <p:selectManyMenu style="height:230px;width:150px;"
                                id="selectedDevices" value="#{smsBean.toDelete}"
                                converter="deviceConverter">
                                <f:selectItems value="#{smsBean.listOfSelectedDevices}" />
                            </p:selectManyMenu>

                            <p:commandButton actionListener="#{smsBean.deleteDevices}"
                                icon="ui-icon ui-icon-circle-triangle-e" process="@form"
                                update="devices" title="Icon Only" />

                            <p:commandButton actionListener="#{smsBean.addDevices}"
                                process="@form" update="selectedDevices"
                                icon="ui-icon ui-icon-circle-triangle-w" title="Icon Only" />

                            <p:selectManyMenu id="devices" value="#{smsBean.toAdd}"
                                converter="deviceConverter" style="height:230px;width:150px;">
                                <f:selectItems value="#{smsBean.listOfDevices}" />
                            </p:selectManyMenu>




                        </h:panelGrid>

0 个答案:

没有答案