用jsf 是的错误是什么原因?--up有分
错误异常
javax.servlet.ServletException: Cannot get value for expression '#{dataPage.data}'
javax.faces.webapp.FacesServlet.service(FacesServlet.java:121)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
我用ShowTable(bb)里调用另一个BB里的方法 用<t:DataTable>加在那个getData 这样出现了错误.
ShowTable.java
import moudel.compoent.DataPage;
import java.util.ArrayList;
import java.util.List;
import javax.faces.event.ActionEvent;
import data.managerSession.SessionUtil;
import data.mapping.Suser;
public class ShowTable {
List userList;
SessionUtil su;
String userName="";
String passWord="";
DataPage dataPage;
public ShowTable(){
su=new SessionUtil();
try{
userList=su.findAllValues("Suser");
dataPage=new DataPage(9,6,userList);
}catch(Exception exp){
System.out.println(exp.toString());
}finally{
su.closeSession();
}
}
public void ss(ActionEvent event){
}
public String getPassWord() {
System.out.println("getpass");
return passWord;
}
public void setPassWord(String passWord) {
System.out.println("setpass");
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
--------------------------------------------------------------------------
DataPage.java
package moudel.compoent;
import java.util.ArrayList;
import java.util.List;
import data.managerSession.SessionUtil;
public class DataPage {
private int datasetSize;
private int startRow;
private List data=new ArrayList();
SessionUtil su;
/** *//**
* Create an object representing a sublist of a dataset.
*
* @param datasetSize
* is the total number of matching rows available.
*
* @param startRow
* is the index within the complete dataset of the first element
* in the data list.
*
* @param data
* is a list of consecutive objects from the dataset.
*/
public DataPage(int datasetSize, int startRow, List list)
{
this.datasetSize = 1;
this.startRow = 2;
this.setData(list);
}
/** *//**
* Return the number of items in the full dataset.
*/
public void setData(List data){
this.data=data;
}
public int getDatasetSize()
{
System.out.println("getDatasetSize");
return datasetSize;
}
/** *//**
* Return the offset within the full dataset of the first element in the
* list held by this object.
*/
public int getStartRow()
{
System.out.println("getDatasetStartRow");
return startRow;
}
/** *//**
* Return the list of objects held by this object, which is a continuous
* subset of the full dataset.
*/
public List getData()
{
return data;
}
}
face-config.xml
<faces-config >
<managed-bean>
<managed-bean-name>login</managed-bean-name>
<managed-bean-class>web.login</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>data.mapping.Suser</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name> showTable</managed-bean-name>
<managed-bean-class>moudel.ShowTable</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>dataPage</managed-bean-name>
<managed-bean-class>moudel.compoent.DataPage</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
----------------------------------------------
show.jsp
<t:dataTable value="#{dataPage.data}" var="user" id="data" rows="5">
<t:column>
<f:facet name="header">
<h:outputText value="username"></h:outputText>
</f:facet>
<h:outputText value="#{user.username}"></h:outputText>
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="password"></h:outputText>
</f:facet>
<h:outputText value="#{user.password}"></h:outputText>
</t:column>
</t:dataTable>