在服务端新建公告的时候,也把要显示的座位ID号存在一个字符串中
如:String Seatshow="2001,2002,2003";说明只有这3个座位登录客户端的时候才能看到新公告action:
System.out.println("当前座位是="+getSessionSeat().getSeatExt());
messageP = this.messageService.queryPageList(param, getSessionSeat().getUserId(), pageSize, page);

List<MessageBean> meslist = messageP.getList();

for (MessageBean bean : meslist) {
String[] newseatshow=bean.getSeatshow().split(",");
for (String string : newseatshow) {
   //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
if(this.getSessionSeat().getSeatExt().equals(string)){
System.out.println(bean.getId()+" : "+string);

}else{

System.out.println(bean.getId()+" : "+"不显示新公告");

}

}
}想请教下高手 怎么做才能实现如果当前登录的座位ID号不在Seatshow里,就不显示新建公告

解决方案 »

  1.   

    你的逻辑有问题:判断第一个,if就显示,else不显示,那如果我不在第一个而在第二个呢?
    应该是全部检查完了才能确定当前登录ID在不在Seatshow里面
    既然是不显示,就是不做操作呗。for (String string : newseatshow) {
       //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
    if(this.getSessionSeat().getSeatExt().equals(string)){
    System.out.println(bean.getId()+" : "+string);
    break;
    }
    }
    这样可以吧?
    //或者用迭代器i,if则break,在循环外面判断,如果i < newseatshow.length(),说明找到了,就是if,否则就是else
      

  2.   


    两层for循环了,break也不好使,应该直接returnfor (MessageBean bean : meslist) {
    String[] newseatshow=bean.getSeatshow().split(",");
    for (String string : newseatshow) {
       //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
    if(this.getSessionSeat().getSeatExt().equals(string)){
    System.out.println(bean.getId()+" : "+string);
    // TODO 显示公告栏的操作
    return;
    }}
    }
      

  3.   

    设置一个标志,当当前登录座位号在SeatShow中的时候置为true,然后在循环外面判断,代码:for (MessageBean bean : meslist)
    {
    String[] newseatshow=bean.getSeatshow().split(",");
    String currentSeatID = this.getSessionSeat().getSeatExt();
    boolean isInSeatShow = false;
    for (String string : newseatshow) 
    {
       //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
    if(this.getSessionSeat().getSeatExt().equals(string))
    {
    System.out.println(bean.getId()+" : "+string);
    isInSeatShow = true;
    break;
    }
    }

    if(isInSeatShow)
    {
    //在这里显示公告
    }

    }
      

  4.   


    在客户端的时候
     <c:forEach var="s" items="${message.messageP.list}" varStatus="i" >
    messageP遍历循环出来的
    现在就是想判断if(this.getSessionSeat().getSeatExt().equals(string)==false){
    就把messageP.list对应的messagebean移除掉,这样在客户端遍历messageP的时候就看不到了,不知道这样的思路对不对?
      

  5.   

    为什么要跳两重循环?
    我break的目的是跳出当前循环,然后比较。
    如果跳了2重,或者直接return,那岂不是只判断了第一个messagebean?
      

  6.   

    不过貌似还是楼主逻辑的问题,是不是应该这样啊?
    for (String string : newseatshow) {
       //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
       if(this.getSessionSeat().getSeatExt().equals(string)){
          for (MessageBean bean : meslist) {
              System.out.println(bean.getId()+" : "+string);
          }
          break;
       }
    }
      

  7.   


    在客户端的时候
     <c:forEach var="s" items="${message.messageP.list}" varStatus="i" >
    messageP遍历循环出来的
    现在就是想判断if(this.getSessionSeat().getSeatExt().equals(string)==false){
    就把messageP.list对应的messagebean移除掉,这样在客户端遍历messageP的时候就看不到了,不知道这样的思路对不对? 
      

  8.   

    这个判断有问题
    你应该保证对于newseatshow里面的每个string,this.getSessionSeat().getSeatExt().equals(string)都是false,才能说明当前id不在newseatshow里。
      

  9.   

    什么不行 啊?
    你再把你的问题描述清楚一点。
    尤其messageP.list。如果id不在newseatshow里面,就把messageP.list里面对应的移除。怎么对应的?还是都移除?
      

  10.   

    感觉兄弟门没看明白我的意思 。。不好意思啊 表达的不清楚在服务端新建公告的时候,也把要显示的座位ID号存在一个字符串中
    如:String Seatshow="2001,2002,2003";说明只有这3个座位登录客户端的时候才能看到新公告action中:
    System.out.println("当前座位是="+getSessionSeat().getSeatExt());
    messageP = this.messageService.queryPageList(param, getSessionSeat().getUserId(), pageSize, page);List<MessageBean> meslist = messageP.getList();for (MessageBean bean : meslist) {
    String[] newseatshow=bean.getSeatshow().split(",");
    for (String string : newseatshow) {
       //判断如果当前登录的座位ID号跟Seatshow的号码一样时才显示
    if(this.getSessionSeat().getSeatExt().equals(string)){
    System.out.println(bean.getId()+" : "+string);}else{
    //这里就是要怎么对messageP.list中不等于Seatshow中的号码不显示出来
    //比如 我新建了一条公告 id=10,Seatshow="2001,2002,2003".
    //这时候有2个用户登录客户端1个userid=2001,1个是2004;
    //然后只有2001的用户才能看到这条id为10的公告 2004的看不到
    System.out.println(bean.getId()+" : "+"不显示新公告");}}
    }
    客户端的jsp页面中:
    在客户端的时候
     <c:forEach var="s" items="${message.messageP.list}" varStatus="i" >
    messageP遍历循环出来的想请教下高手 怎么做才能实现如果当前登录的座位ID号不在Seatshow里,就不显示新建公告 
      

  11.   

    action中:
    private IPaging<MessageBean> messageP;
    private IPaging<MessageBean> messageN;//用来存放筛选的结果System.out.println("当前坐席是="+getSessionSeat().getSeatExt());
    messageP = this.messageService.queryPageList(param, getSessionSeat().getUserId(), pageSize, page);

    List<MessageBean> meslist = messageP.getList();
    List<MessageBean> newlist=new ArrayList<MessageBean>();

    for (MessageBean bean : meslist) {
    String[] newseatshow=bean.getSeatshow().split(",");

    for (String string : newseatshow) {
    if(this.getSessionSeat().getSeatExt().equals(string)){
    newlist.add(bean);
    //把相等的bean放进一个新的list里 然后再存在messageN中,在客户端的时候遍历 messageN?这个思路行不行?
    break;

    }
    }

    }
    try {
    this.messageN.setList(newlist);
    } catch (Exception e) {
    e.printStackTrace();
    }


            return StrutsEnv.getActionMapping().findForward(SUCCESS);
      

  12.   

    哎 看来是解决不了 abc41106 分都给你 你最热心了