java.lang.NumberFormatException: For input string: "name"
是不是什么地方把t.name当数字用了,检查一下是否还有其他地方在用name。

解决方案 »

  1.   

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="test.*"%>
    <%
    TestEL t = new TestEL();
    t.setName("100");
    request.setAttribute("t", t);
    %>
    ${t.name}<br/>看下这个可以吗?
      

  2.   


    如果不继承那个ArrayList的话就没事儿。
      

  3.   

     把  name换成别的试试 有可能和 arrayList的起冲突了。
      

  4.   

    我想问为什么把一个实体类继承了ArrayList,用el表达式,对象必须的标准的javabean
      

  5.   

    我清楚是这个异常,数字格式转换错误。但关键是为什么会有这错,并且为什么是继承ArrayList后出现??
      

  6.   

    我觉得你的代码要改下了 美女~~~!!
    你在list里面取值用
    C标签的里面的一个
    forEach 你看看你传到jsp里面那个名字加了${你的集合名字}这个没有
    你没有加$就会出现你的错误
    一般出现你的那个异常就是由于你的el表达式不合法照成的
      

  7.   


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="test.*"%>
    <%
    TestEL t = new TestEL();
    t.setName("testxxxxxxxxxx");
    request.setAttribute("t", t);
    %>
    ${t[0].name}<br/>试试
      

  8.   

    嗯对我知道是这个错,我要怎么用el表达式取到这个name呢?我估计出这个错,可能是把name当成ArrayList的index了
      

  9.   

    取集合没有问题,也就是${t}这样没有问题,它会把这个集合打印出来。但我要取这个集合里的name属性,${t.name}这样写EL表达式是对的吧?
      

  10.   


    我也觉得 必须是标准的javabean
      

  11.   

    大姐给你最简单的
    List mylist=new ArrayList();
    这样绝对可以用EL表达式取值的,我这个项目中的很多查询页面都这样做的.
    其实这样做和你自己写的哪个继承Arraylist的类是一样的,
    我这种写法其实还不是用父类(超类)的实现一个子类(派生类).
    希望对你有帮助!
      

  12.   

    这个可以理解,list是比较特别的。 el对这种类的处理应该跟普通类不一样。就像HashMap, 你想想假设你继承的是HashMap不一样有问题么
      

  13.   


    +1    必须是javabean
      

  14.   

    是不一样,但想搞清楚原因。我换个问题,但性质一样,假如我想${l.size}这样访问到list的的大小,该怎么做?
      

  15.   

    这样当然能行,我是想继承了之后怎样取到那个name
      

  16.   

    这个不是javabean?我的理解是只要一个类里提供了get方法,即使没有属性也能访问!
      

  17.   

    ${name}JAVA开发技术交流群:199632302
      

  18.   

    继承后,我可以在子类中定义一个total的变量,表示总记录数,(注意不是size(),因为有分页的情况)。这样我把这个子类放入request中,就可以通过el取查询的数据和总记录数了,而不用往request里再放个total之类的来记录总条数。
      

  19.   

    我觉得LZ的问题可以换成这样的。“el表达式取得集合的大小”。
      

  20.   

    老兄,如果分布为每页20,这个size=20,而真正的总记录数可能是999条!!!
      

  21.   

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="day001.TestEL"%>
    <%
    TestEL t = new TestEL();
    t.add("fdfd");
    request.setAttribute("t1", t);
    %>
    ${t1}<br/>
    <s:debug />

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="day001.TestEL"%>
    <%
    TestEL t = new TestEL();
    t.setName("fdsf");
    request.setAttribute("t1", t);
    %>
    <%=request.getAttribute("t1") %>
    <s:debug />


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="day001.TestEL"%>
    <%
    TestEL t = new TestEL();
    t.setName("fdsf");
    request.setAttribute("t1", t);
    %>
    ${t1.a}
    楼主看看这个吧,呵呵呵
    你好像没明白这个类
    你继承了这个ArrayList了啊,呵呵
    这个类的方法现在
    而且你看,我把你的name改成a了,还是包这个异常
    所以这个时候我认为已经没有TestEl里面的getName()这个方法了
    你要是问具体的我也不是很清楚
    但是我觉得楼主没必要死抠这个,呵呵
    这个对于学java自我感觉没什么帮助你要是去掉name的话,在页面上打印的是:[]
    呵呵呵,希望楼主仔细想想
      

  22.   

    但是楼主要是在java控制台打印
    可以使用getName,setName,具体我就不说了

      

  23.   

    美女你先写的个测试类看看你取的值是多少
    然后在显示在前台看看
    我前几天出现过跟你一样的问题呀
    我就是标签前面少了一个$
    我看你代码上面好像也写了 呵呵 偶也想不通
    我建议你写个测试类看看值在丢到jsp上面来看看~~!
      

  24.   

    set放法设置成接收Object类型的参数
    内容如下
    List list = Arrays.asList(items);
    for(Object o:list)
    this.items.add(o);
    int length = Array.getLength(items);//{1,2,3}
    for(int i=0;i<length;i++){
    this.items.add(Array.get(items, i));自定义标签+el表达式。
      

  25.   

    ArrayList是int类型,你定义的t是对象类型,你把字符串设进t当然报错
      

  26.   

    ArrayList是int类型,你定义的t是对象类型,你把字符串设进t当然报错
      

  27.   

    在struts1中,当点击submit页面提交后, 由 ActionServlet交给RequestProcessor的processPopulate()方法, 由processPopulate()方法收集请求数据,放在map中,key为表单域的name属性,如 name, account.name, stocks[0].code. 然后借助于 Common-beanutils 工具包设置到 ActionForm 的相应属性中,struts对ActionForm中的数据赋值也是从这个map里取值的。比如: 
         1:如果key是简单的'userName',直接form.setUserName(map.get('userName')); 
         2:如果key是'user.userName', 执行的操作是 form.getUser().setUserName(map.get ('user.userName'); 
         3:如果key是'list[0].userName', 它可以对应到数据或集合中,如对于数组 form.list[0]. name=map.get('list[0].userName'); 对于集合(List) form.getList().get(0).setUserName (map.get('list[0].UserName'))
         4:如果有多个input以相同的 名字'userName'  ActionForm 直接将其视为一个String数组 (这个数组声明用时不用初始化不用将其初始化)
          根据上面的可以看出,在ActionForm中如果有对象或列表的话,必须要初始化,拿2来说吧,如果有一个User user;对象,User里有两个属性:userName和passWord。struts1赋值是通过form.getUser().setUserName(map.get('user.userName'));但是User没有初始化,form.getUser()就会报空指针异常。 
          对于一个普通的对象,直接初始化就好了,但是对于一个list来说,最好写一个通过的生成list里面对象的一个类,因为每加一条记录就要增加一个对象,如果像普通对象在类似构造方法里加的话就比较麻烦,所以最好用一个java的回调的功能(Class对象),新写一个类专门用于生成这个list中的对象。具体的也比较简单如用ArrayList来写一个如下: 
    import java.util.ArrayList; 
    public class AutoArrayList extends ArrayList { 
        private Class itemClass; 
        public AutoArrayList(Class itemClass) {
                   this.itemClass = itemClass; 
        } 
        public Object get(int index) { 
                  try{ 
                    while(index >= size()) { 
                          add(itemClass.newInstance()); 
                     } 
                  }catch(Exception _ex) {
                      _ex.printStackTrace(); 
                  }
         return super.get(index); 
         } 

          在ActionForm中就可以初始化了,比如: private List list = new AutoArrayList(User.class); 在Action中的操作就比较简单了
      

  28.   

    这位大哥,您看清楚,这个TestEL继承了ArrayList!!!
      

  29.   

    我也遇到这个问题,是继承ArrayList造成的,它会在ListELResolver extends ELResolverif (property instanceof String) {
                return Integer.parseInt((String) property);
    }执行会报错。不管送的类型是什么,要想在页面用继承ArrarList后的其它属性,就要单独对继承后的类进行包装一次,变成正常的JavaBean,不继承ArrayList就可以使用El表达式。