我在action中用如下方法,返回一个bean对象到jsp:
ActionContext.getContext().put("user", user);在jsp中,有如下代码:
<s:textfield name="username" value="${user.username}"></s:textfield>为什么打开会出错呢?(500的错)
经测试,是value="${user.username}"这句问题,
而我单单把${user.username}这个放在其它地方,可以得到值,说明:user并非空指针,那为何会出错呢?
我在struts1.2的<html:text>中,使用value="${user.username}"都没问题的.

解决方案 »

  1.   

    ActionContext.getContext().getSession.put("user", user);
      

  2.   


    一样的出错,既然在别的地方可以取到值,说明,request里有值的,跟这个没关系的.
      

  3.   

    <s:textfield name="username" value="${user.username}"> </s:textfield>
      

  4.   

    补充异常信息如下:
    javax.servlet.ServletException: org.apache.jasper.JasperException: /jsp/userInfo.jsp(121,9) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
    是不是<s:textfield >标签不支持表述式语言呢?
      

  5.   

    web-app version="2.4"的话用jstl1.1的tld,如果用1.0的就有问题
      

  6.   

    页面首先取得user对象,用action标签,】
    然后下面改为:
    <s:textfield name="username" value="%{#user.username}"> </s:textfield> 
      

  7.   

    看样struts1 过度到 struts2的有问题啊,要是直接学struts2就不会冒出楼主的问题了用ognl哦
      

  8.   

    http://struts.apache.org/2.1.6/docs/tag-syntax.html楼主进去读一下 Expression Language Notations 这个。 就可以解决你的问题啦
      

  9.   

    <s:textfield name="username" value="user.username"> </s:textfield> 
      

  10.   

    struts2的标签里面只支持ognl表达式的,不能写el表达式
    13楼的回答应该是正确的,但是Action中要有User对象,并且要有对应的get,set方法!
    其实按照楼主的方式应该是这样来做的
    <s:textfield name="username" value="%{#session.user.username}"> </s:textfield>
      

  11.   

    先s:setname="username" value="${user.username}"> 
    再取得username.username如何?
      

  12.   

    这个标签的value属性好像不支持表达式语言
    不然出错,返回input的时候,再次去读取数据,而不是保存刚才填入的数据怎么办?
      

  13.   

    struts2标签中不能使用EL,换成OGNL
      

  14.   

    <s:textfield name="username" value="%{user.username}"> </s:textfield><s:textfield name="username" value="%{#user.username}"> </s:textfield>测试下
      

  15.   

    应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的备用版本(RT库), 以下有两种处理方法: 1. 修改web.xml.<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    改为2.3版本的<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    2. 使用JSTL core RT库JSTL core库的有两种taglib伪指令, 其中RT库即是依赖于JSP传统的请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)JSP中使用<%@ taglib uri=http://java.sun.com/jstl/core prefix="c"%>在2.3版本都可以,在2.4就不行了, 难道是版本不兼容吗?只要将<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
    改为<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>
      

  16.   

    13楼的解决方案正确,struts2里的标签不支持EL表达式,但支持OGNL。这是由struts1.X 转struts2的人遇到的普遍问题。
    <s:textfield name="username" value="%{#user.username}"> </s:textfield>