打印

求教dataview使用的两个问题

求教dataview使用的两个问题

请问如何实现这种功能:
1.dataview绑定的其中一列值等于某个特殊值时则不显示改列(请参考代码部分)。

2.参考文章介绍的用PagedDataProvider进行服务器端分页,为什么现在PagedDataProvider不推荐使用了?
尝试换成GridDataProvider实现服务器端分页但是失败了,是不是dataview只能用不推荐使用的PagedDataProvider进行服务器端分页啊?
   
   原来是这样的
复制内容到剪贴板
JAVA 代码:
  1. @ManagedProperty
  2.    private PagedDataProvider pagedBooks = new PagedDataProvider() {
  3.       public Object getData(int start, int limit){......}
  4.       public int getTotalCount(){......}
  5.    }
我把分页由原来的PagedDataProvider改为GridDataProvider实现的步骤如下:
   替换时直接把原来写在getDatas() 方法内的代码移到public Object[] getElements()方法中,
   原来getTotalCount()方法内的代码移到public int getTotalCount()中,
   public Object getElement(int index) 直接返回的null
   控制台报错(请参考下面的页面代码部分)
复制内容到剪贴板
XML 代码:
  1. 2008-06-22 08:10:25 严重 [facelets.viewhandler] Error Rendering View[/anonymity/listProducts.xhtml]
  2.    javax.el.ELException: /anonymity/listBooks.xhtml @63,55 value=\"#{b.name}\": 找不到类型ah.js.faces.anonymity.listProductsBean$1的'name'属性。
  3.    at __expression__(0)
问题比较基础,期待大侠伸以援手。
复制内容到剪贴板
XML 代码:
  1. <w:dataView id=\"viewListBooks\" jsvar=\"productView\" var=\"b\" rows=\"5\"
  2.             value=\"#{listBooksBean.pagedBooks}\">
  3.             .............................
  4.             <!-- 名称 -->
  5.             <w:outputColumn id=\"name\" value=\"#{b.name}\" />
  6.             <!-- 英文名 -->
  7.             <w:outputColumn id=\"en_name\" value=\"#{b.originalName}\" />
  8.            <!--放在url上的参数-->
  9.             <w:outputColumn id=\"id\" value=\"#{id}\"/>
  10.             <f:facet name=\"template\">
  11.                <h:panelGroup layout=\"block\" styleClass=\"product\">
  12.                   <layout:panelGrid columns=\"2\">
  13.                      <img src=\"../upload/{bookimage}\" title=\"{title}\" class=\"image\" />
  14.                      <layout:panelGrid columns=\"1\">
  15.                       ......................
  16.                      <h:outputLink>
  17.                       <span class=\"title\">{bookname}</span>
  18.                       <!--{id}放在value属性的引号内不求值了,这个怎么解决呢?-->
  19.                       <f:param name=\"id\" value=\"{id}\" />
  20.                      </h:outputLink>
  21.                         <!--此处英文名有时为空,应当不显示,render=“?”。这里怎么处理呢-->
  22.                       <!--此处英文名有时为空,应当不显示,render=“?”。这里怎么处理呢-->
  23.                         <!--此处英文名有时为空,应当不显示,render=“?”。这里怎么处理呢-->
  24.                       <!--此处英文名有时为空,应当不显示,render=“?”。这里怎么处理呢-->
  25.                         <layout:cell colspan=\"1\" rowspan=\"1\" >
  26.                            <span>英文名: </span>{en_name}
  27.                         </layout:cell>
  28.                      </layout:panelGrid>
  29.                   </layout:panelGrid>
  30.                </h:panelGroup>
  31.             </f:facet>
  32.             <f:facet name=\"empty\">
  33.                抱歉,没有相关的图书信息.
  34.             </f:facet>
  35.          </w:dataView>
[ 本帖最后由 jsffan 于 2008-6-22 10:54 编辑 ]

TOP

在dataview中这样定义了一列
复制内容到剪贴板
XML 代码:
  1. <w:outputColumn id=\"id\" value=\"#{b.id }\"/>
紧接着在template中这样取值
复制内容到剪贴板
XML 代码:
  1. <layout:cell colspan=\"1\" rowspan=\"1\">
  2.    <h:outputLink>
  3.      <span class=\"title\">{bookname}</span>
  4.      <f:param name=\"id\" value=\"{id}\" />
  5.    </h:outputLink>
  6. </layout:cell>
}
dataview的模板要求用大括号扩住一列的ID得到这一列的值,如{id}。
现需要将{id}对应的值赋给<f:param>的value属性怎么办呢?
如上面代码所示,直接放在value属性的双引号中将不对{id}求值,
而把{id}联通两边的大括号整个作为value属性。
如果用#{b.id}的话,报错"标识符未定义: b"
请指点一下怎么才能正确的将{id}的值赋给value属性啊?

[ 本帖最后由 jsffan 于 2008-6-22 11:50 编辑 ]

TOP

各位,来帮忙看看啊.................

[ 本帖最后由 jsffan 于 2008-6-23 10:05 编辑 ]

TOP

我也遇到这样的问题,

TOP