JSF的问题

mty 2004-10-25 05:10:57
public class UserNumberBean implements Serializable{

ArrayList ymdList;
String ymdSel;

public UserNumberBean() {
//ymdList (HashMap)
ymdList = new ArrayList();

HashMap map = new HashMap();
map.put("name", "2004年");
map.put("code", "2004");
ymdList.add(0, map);

HashMap map1 = new HashMap();
map1.put("name", "2005年");
map1.put("code", "2005");
ymdList.add(1, map1);
}

/**
* @return ymdList
*/
public ArrayList getYmdList() {
return ymdList;
}
/**
* @param ymdList ymdList
*/
public void setYmdList(ArrayList ymdList) {
this.ymdList = ymdList;
}
/**
* @return ymdSel
*/
public String getYmdSel() {
return ymdSel;
}
/**
* @param ymdSel ymdSel
*/
public void setYmdSel(String ymdSel) {
this.ymdSel = ymdSel;
}
}

.JSP
ymdSel:<h:selectOneRadio id="ymdSel" value="#{UserNumberBean.ymdSel}">
<c:forEach var="item" items="${UserNumberBean.ymdList}">
<%--f:selectItem itemValue="#{item.code}" itemLabel="#{item.name}"/--%>
</c:forEach>
</h:selectOneRadio>

报错:
org.apache.jasper.JasperException: /greeting.jsp(66,5) TLD??????????attribute?????????items?????????????
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:43)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:362)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:944)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:699)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1445)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2167)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2217)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:719)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1445)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2167)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2217)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:719)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1445)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2167)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2217)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:719)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1445)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2167)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2217)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2223)
org.apache.jasper.compiler.Node$Root.accept(Node.java:460)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2167)
org.apache.jasper.compiler.Validator.validate(Validator.java:1478)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:210)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:419)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:402)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:262)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:263)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:210)
javax.servlet.http.HttpServlet.service(HttpServlet.java:861)
sun.reflect.GeneratedMethodAccessor308.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:246)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
java.security.AccessController.doPrivileged(Native Method)
java.security.AccessController.doPrivileged(Native Method)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:246)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

如果ymdList为ymdList.add(new SelectItem("aa", "bb"));
用f:selectItems value="#{UserNumberBean.ymdList}" />就没问题.

是不是ArrayList中包含的必须是SelectItem对象?不能为别的?
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangqiao 2004-12-09
  • 打赏
  • 举报
回复
在jsp中使用java和这个也类似,但是可能要自己定义标签来输出,因为简单的jstl是不行的,他不能实现递归
shangqiao 2004-12-09
  • 打赏
  • 举报
回复
刚刚才发现你问了这么多问题,不知道你现在解决了没有。构件目录结果最多使用的是composite模式,如下面的代码:

class FileNode
{
public:
FileNode(string name){
this->name=name;
}
FileNode(){}
virtual ~FileNode();
virtual void addFile(FileNode* node){
children.push_back(node);
}
virtual list<FileNode*>::const_iterator getChildNode(){
return children.begin();
}
virtual string getName(){
return name;
}
virtual bool hasNext(list<FileNode*>::const_iterator iter){
return iter!=children.end()&&children.size()!=0;
}
protected:
list<FileNode*> children;
string name;
};

class File :public FileNode
{
public:
File(string name){
this->name=name;
}
//File(){}
virtual ~File();
virtual void addFile(){
return;
}
virtual list<FileNode*>::const_iterator getChildNode(){
return fileTemp.begin();
}
private:
list<FileNode*> fileTemp;
};

class Directinary :public FileNode
{
public:
Directinary(string name){
this->name=name;
}
virtual ~Directinary();
/*
virtual string getName(){
return this->name;
}
*/
};
那么你现在只要使用

void outFile(FileNode* node){
list<FileNode*>::const_iterator iter=node->getChildNode();
for (;node->hasNext(iter);iter++)
{
FileNode* nodeTemp=*iter;
cout<<"fileName\t"<<nodeTemp->getName()<<endl;
//outFile(nodeTemp);
}
iter=node->getChildNode();
for (;node->hasNext(iter);iter++)
{
FileNode* nodeTemp=*iter;
//cout<<"fileName\t"<<nodeTemp->getName()<<endl;
outFile(nodeTemp);
}
}

int main(int argc, char* argv[])
{
printf("Hello World!\n");

Directinary direc("c");
Directinary direc1("dir1");

File file1("file1");
File file2("file2");
File file3("file3");

direc1.addFile(&file1);
direc1.addFile(&file2);
direc.addFile(&direc1);
direc.addFile(&file3);


outFile(&direc);
return 0;
}
mty 2004-10-26
  • 打赏
  • 举报
回复
ding a
mty 2004-10-25
  • 打赏
  • 举报
回复
大家在构造查询结果的时候,数据结构是怎么构造的?
mty 2004-10-25
  • 打赏
  • 举报
回复
那怎么样构造一个树形结构?或者DataTable结构..
能不能给个例子?
多谢了....
shangqiao 2004-10-25
  • 打赏
  • 举报
回复
你在ArrayList中存的是一个Map对象,而在一个map对象上进行name,code操作你认为会怎么样,你的要求是要在map对象里存的值进行name,code操作,而不是map对象,所以肯定是不行了,而你下面可以执行的代码便是将要显示的数据放入了ArrayList中,而不是象上面的将显示的值放入Map,然后将Map放入ArrayList

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧