我有一个带分页rows = 7
的数据表:前 7 个项目已正确加载和显示;但是当我们单击链接查看下一组元素时,会显示“未找到记录”。
对于表格页脚模板,我们使用了
In total there are #{fn:length(deviceBean.devices)} devices.
这向我们展示了(找到了 11 项),其中有更多要显示的项目
我究竟做错了什么 ?
这里的xhtml文件代码:
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<h:head />
<h:form>
<p:growl id="messages">
<p:toolbarGroup align="right">
<p:commandButton type="button" value="Summary" />
<p:separator />
</p:toolbarGroup>
</p:growl>
</h:form>
<h:form>
<p:dataTable id="tbl1" var="searchvalue"
value="#{searchBean.searchmodel}" rows="1">
<p:column>
<f:facet name="header">
<h:outputText value="Search Criteria" />
</f:facet>
<h:outputText value="By State Name" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Search Input" />
</f:facet>
<h:outputText value="#{searchvalue.criteria}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Selected Model" />
</f:facet>
<h:outputText value="#{searchvalue.model}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Start date" />
</f:facet>
<h:outputText value="#{searchvalue.startdate}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="End date" />
</f:facet>
<h:outputText value="#{searchvalue.enddate}" />
</p:column>
<!-- <p:column>
<f:facet name="header">
<h:outputText value="Age Range" />
</f:facet>
<h:outputText value="#{searchvalue.agerange}" />
</p:column> -->
</p:dataTable>
</h:form>
<p:spacer width="100" height="10" /> and <p:spacer width="20" height="20" />
<h:outputText value=" " />
<h:form>
<h:form>
<p:growl id="messages">
<p:toolbarGroup align="right">
<p:commandButton type="button" value="Detail:" />
<p:separator />
</p:toolbarGroup>
</p:growl>
</h:form>
<p:dataTable id="tbl" var="device" value="#{deviceBean.devices}"
paginator="true" rows="7">
<p:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{device.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Email" />
</f:facet>
<h:outputText value="#{device.email}" />
</p:column>
<f:facet name="footer">
In total there are #{fn:length(deviceBean.devices)} devices.
</f:facet>
</p:dataTable>
<br />
</h:form>
</f:view>
这是托管 bean 类:
@ManagedBean
@ViewScoped
public class SearchBean implements Serializable {
HttpServletRequest request = (HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequest());
private List<SearchModel> searchmodel = (List) request.getAttribute("search_attributes");
public List<SearchModel> getSearchmodel() {
return searchmodel;
}
}
@BalusC:不,我没有使用过 Spring Security 之外的任何东西,我没有通过 Spring 管理 bean,我可以解释它是如何工作的:在 Spring security 进行安全身份验证后,控件进入 welcom.jsp 页面,在这个页面中我有used <jsp:forward page="/faces/index.xhtml"></jsp:forward
,这是我的表单,提交表单时,我调用一个包含表单数据的类,该类(Showsummary.java)进行数据查询并将数据放入键值对中,如 req.setAttribute("search_attributes", searchattributes) ; ,然后控制权再次进入我的托管 bean,它返回“成功”,这被映射到我上面在我的 faces-config 中显示的 xhtml 文件,summary.xhtml 的托管 bean 我上面编写的代码访问数据这边走 :
HttpServletRequest request = (HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequest());
private List<SearchModel> searchmodel = (List) request.getAttribute("search_attributes");
public List<SearchModel> getSearchmodel() {
return searchmodel;
}