日期:2014-05-17  浏览次数:20663 次

在jsp也页面中,通过el表达式去取出对象中的get方法的时候报错
servelet中的代码:
List<UserVo> list=SqlDao.getAll(userEmail);

UserVo user=(UserVo)list.get(0);
//System.out.println(user.getRegDate());

request.setAttribute("user",user);

request.getRequestDispatcher("welecome.jsp").forward(request,response);
jsp中的代码:

${user.getUserName()}   通过传递过来的user这个对象,去操作它的get方法不行,会报错。

错误信息:
     严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /welecome.jsp(433,13) The function getUserName must be used with a prefix when a default namespace is not specified。。。。。。



java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)




------最佳解决方案--------------------
引用:
引用:
引用${user.getUserName()}   通过传递过来的user这个对象,去操作它的get方法不行,会报错。
把这段代码换成  
Java code12${requestScope.user.userName} // 最好指定查找范围,可以提高查找效率



可是我要通过get方式取出来,那怎么办?


${logininfo.username} 是下面两句话的编码简化写法 
LoginInfo logininfo =(LoginInfo)session.getAttribute(“logininfo”);
String username = logininfo.getUsername();
懂了吗?


------其他解决方案--------------------
el去取的表达式值的时候就是通过调用你的get方法实现的,所以在使用el的时候直接用${对象名(即你存储的user).属性名(即你书写的private属性,但是必须有get方法)}。
------其他解决方案--------------------
楼上说的对,el本身就会调用get方法。
如果你非要加上get,可以用

<%
user.getUserName()
%>
------其他解决方案--------------------
引用
${user.getUserName()}   通过传递过来的user这个对象,去操作它的get方法不行,会报错。

把这段代码换成  

${requestScope.user.userName} // 最好指定查找范围,可以提高查找效率

------其他解决方案--------------------
引用:
引用${user.getUserName()}   通过传递过来的user这个对象,去操作它的get方法不行,会报错。
把这段代码换成  
Java code12${requestScope.user.userName} // 最好指定查找范围,可以提高查找效率




可是我要通过get方式取出来,那怎么办?
------其他解决方案--------------------
该回复于2012-11-13 01:02:47被管理员删除
------其他解决方案--------------------
引用:
引用:引用:
引用${user.getUserName()}   通过传递过来的user这个对象,去操作它的get方法不行,会报错。
把这段代码换成  
Java code12${requestScope.user.userName} // 最好指定查找范围,可以提高查找效率

……


非常感谢。问题已解决!