List <Book> _queryResult = new ArrayList <Book>(); 
不应该每次都new.
还有该List的定义不应在该方法中。
放到类的开头。
并且注入依赖

解决方案 »

  1.   

    我写的一个。
    JSP页面:
    <table>
            <tr>
                <td colspan="5" align="right">
                    <h:commandButton styleClass="button" value="删除用品" action="#{category.deleteArticle}"/>
                    <h:commandButton styleClass="button" value="更新用品" action="#{category.updateArticle}"/>
                </td>
            </tr>
        </table>
        <h:dataTable id="articleList" value="#{category.articles}" var="article" headerClass="gray-bar" width="100%">
            <h:column>
              <f:facet name="header">
                <h:outputText value="选择"/>
              </f:facet>
               <h:selectBooleanCheckbox id="articleIds" value="#{article.checked}" />
            </h:column>        <h:column>
              <f:facet name="header">
                <h:outputText value="用品编号"/>           
              </f:facet>
              <h:outputText value="#{article.articleId}"/>
           </h:column>  
           
           <h:column>
              <f:facet name="header">
                <h:outputText value="用品名称"/>
              </f:facet>
              <h:inputText value="#{article.articleName}"/>
            </h:column>
            
            <h:column>
              <f:facet name="header">
                <h:outputText value="计量单位"/>
              </f:facet>
                <h:inputText value="#{article.unit}"/>
            </h:column>
    </h:dataTable>
    申明List
        //一个类别的所有用品
        private List<Article> articles; 
        public List getArticles(){
         return articles;
        }
        
        public void setArticles(List newValue){
         this.articles=newValue;
        }  
    删除方法:
        //删除用品信息
        public String deleteArticle() throws UserException {
            int j=0;
            //被选择的用品标识
            Integer [] articleIds = new Integer[articles.size()];
            for(int i=0;i<articles.size();i++){
                Article article = (Article)articles.get(i);
                if(article.isChecked()){
                    Integer articleId = article.getArticleId();
                    articleIds[j++] = articleId;
                }
            }
            //调用服务层的删除方法
            if(null != articleIds) {
                ArticleService service = new ArticleServiceHibernateImpl();
                if(service.deleteArticle(articleIds)) {
                    return "success";
                }else {
                    return "failure";
                }
            }
            return null;
        }
      

  2.   

    还有Article类:
         private Integer articleId;
         private Category category;
         private String articleName;
         private String unit;
         private Double currentPrice;
         private Set buyBills = new HashSet(0);
         
         private Integer requisitionNumber;
         private Double subTotalPrice;
         
         private boolean checked;
      

  3.   

    List <Book> _queryResult = new ArrayList <Book>(); 
    这个list声明我已经放在类的开头了,getter和setter也都有,其他的代码和你的大同小异,可是页面上那个checkbox的值却不能更改list里对应的boolean值,每次删除都是失败