在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} // 最好指定查找范围,可以提高查找效率
……
非常感谢。问题已解决!