我在Action里面怎么用request设置属性值,然后在jsp里面用el或者jstl获取呢?
Action:
public execute(){
  HttpServletRequest request = ServletActionContext.getRequest();
  request.setAtrribute("user",user);//user是一个对象,它有username和password两个属性;
}jsp:
<%@ page type="text/html" import="java.util.*" encoding="gb2312"%>
<html>
<head><title>测试</title></head>
<body>
${user.username}<!--用el表达式获取request传过来的属性值-->
</body>
</html>
这样肯定是获取不到的,我试过,也查了挺多资料的,可是最终还是没弄明白,听说不能这么设置,要什么ValueStack,没搞懂,请哪位大虾指教一下,意思就是说在struts2.x的Action里面怎么样设置类似用servlet里面一样用request传递属性值的?非常感谢了!(谁的答案好,就给谁高分)

解决方案 »

  1.   

    http://jackzhangyunjie.javaeye.com/blog/231205页面取值没有什么特别。
      

  2.   

    这样写应该可以取到的,你的username有get方法不?
      

  3.   

    你的action 类里面难道没有自动生成的这样一个方法吗public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    {
    // TODO Auto-generated method stub
    return null;
    }
      

  4.   


    楼上的,有点落伍了,你的还是struts1呢,他的是struts2
      

  5.   

    Request.Att……操作完毕后  不能用重定向 比如
    response.getWriter().writer("<script>location.href=……</script>");
    response.sendRir……()等方式只能靠Request转发后的页面才能访问到Request内的数据
      

  6.   

    页面:
    <input name="user.name" type="text"/>
    ....action:
     有user属性的set和get的方法,当请求到这个actin的时候,struts2会帮你封装好,你只要在
     action中有set和get方法就行了。获取时用user.getxxx()就可以了。。
    然后做你要的处理
      

  7.   

    <%@ page language="java" isELIgnored="false" contentType="text/html; charset=GBK" pageEncoding="GBK"%>引入表达式语言(EL)   JSP 2.0的一个主要特点是它支持表达语言(expression language)。JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制功能。自制标记也有自定义函数的功能,因此基本上所有seriptlet能实现的功能都可以由JSP替代。在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。   在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL。在page directive中的isELIgnored属性用来指定是否忽略。格式为:   <%@ page isELIgnored="true|false"%>   如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。   虽然JSP 2.0可以使JSP中完全使用表达语言而避免scriptlet,在实际编程中,应该根据程序的功能要求和编程人员的自身条件选择合适的方式。使用表达语言的JSP比较方便规整,但是由于需要将标记进行转换,在第一次被调用时会比较慢;有些编程人员由于对Java比较了解,因而更习惯JSP 1.2之前的编程方式,因此,在使用中应因地制宜地选择适用的编程方法。  
      

  8.   

    struts2这样写ActionContext.getContext().put("user", user);
    相当于struts1的防到request中
      

  9.   

    如果用EL可以考虑这么写${param.user.username}如果不行这么写${atrribute.user.username} ;
    用struts2.0标签可以这么写 <s:property value="user.username" />
    以上最起码要保证user这个bean中有getter setter方法。
      

  10.   

    public class HMViewAction  implements ServletRequestAware {
    @get&set----其实你直接用user就行,不用request也没问题。你可别我这么写,自己写set和get方法吧!
            private User user;

    private HttpServletRequest request;
    public void setServletRequest(HttpServletRequest request) {
    this.request=request;
    }
    public String execute() throws Exception {
    request.setAtrribute("user",user)
    return SUCCESS;
    }
    }
      

  11.   

    public execute(){ 
      HttpServletRequest response= ServletActionContext.getResponse(); 
      request.setAtrribute("user",user);//user是一个对象,它有username和password两个属性; 

    不是设置到request中是设置到response中
    改:
     public execute(){ 
      HttpServletResponse response= ServletActionContext.getResponse(); 
      response.setAtrribute("user",user);//user是一个对象,它有username和password两个属性; 
      

  12.   

    在Action中定义:
    private User user;user有get/set方法。EL取值:
    ${user.username}struts2取值:
    <s:property value="user.username" />  //从ValueStack中取值

    <s:property value="#user.username" /> //从Request中取值
      

  13.   

    ActionContext.getContext().put('xxx',xxx);
      

  14.   

    应该在你的user里 设置get set 方法后 这种事能取到的撒 除非你这个user对象本身就是空的
      

  15.   

    var userName = <s:property value="#request.user.userName"/>;
      

  16.   

    应该在你的user里 设置get set 方法后 这种是能取到的撒 除非你这个user对象本身就是空的
      

  17.   

    在action里面应该先从数据库取得user
    然后setRequestAttributeValue("user", user);
    页面则按我上面说的取user里面的属性 你是要这个结果吧
      

  18.   

    <s:property value="user.username" /> 
      

  19.   

    不太懂,我记得这个execute方法不得有个String类型的返回值吗?
      

  20.   

    肯定能取到,好好检查你的user对象吧
      

  21.   

    Map sessionMap = ActionContext.getContext().getSession();
                sessionMap.put("qi", qi);
    Struts2用这个!
      

  22.   

    Action里面放上username和psw的get set 方法就可以取到了 頁面用<s:property value="username"/>取struts 2 不太用request的。。
      

  23.   

    你在action里面有request.setAttribute()
    那你在页面的时候就可以有一个request.getAttribute() 这样是可以取到的
      

  24.   

    ServletActionContext.getRequest().setAttribute("list", list);
    在页面端是不能用EL表达式直接取集合里对象的属性的,必须要选遍历出来集合,然后通集合里对象用点导航取对象的属性request = ServletActionContext.getRequest();
    session = ServletActionContext.getRequest().getSession();struts2提供了这样一个静态的类,可以直接获取request,session.....
    FORM:QQ群Java 2  Enterprise Edition(88509302)
      

  25.   

    你那样写是可以的,设值也没有问题,如果在页面端取不到值的话可能跟你的项目环境有关,EL表达式要jsp2.0的版本才可以使用的,先在页面端通过java代码打印一下,是否是EL表达式的问题<%
        User user = (User)request.getAttribute("user",user);
        System.out.println(username=" +user.getUsername());
    %>
    要在页面导入User这个类,如果打印出来有值的话,就说明了在request放值是没有问题的
    然后就找下你的web.xml文件,看下头文件,如果头文件是web-app_2_3.xsd是不能用EL表达式的,你把web.xml文件删了,另外建一个新的项目建项目的时候J2EE版本选最高的,如果IDE没有最高版本的可以找我49871320,用EL表达式之前一定要保证web.xml文件的头文件是web-app_2_4.xsd或者web-app_2_5.xsd的版本FORM:QQ群Java 2  Enterprise Edition(88509302)
      

  26.   

    在你的action中   user对象需要有set和get方法
      

  27.   

    set和get方法是在页端与后面收集数据与自动赋值时用的,用EL表达式是可以不需要get set方法
    El表达式是取的request中参数的值
      

  28.   

      在Action获得request对象就可以了
    ServletActionContext.getRequest().setAttribute(arg0, arg1);
    ,也界面上取值还是原来那样取
      

  29.   

    实现ServletRequestAware接口加个属性:HttpServletRequest request;然后实现其方法
    public void setServletRequest(HttpServletRequest request) {
    this.request = request;
    }接下来就可以用了
      

  30.   

    1.user中要有get、set方法;
    2.用服务器端定向;
    3.jsp页面引入jstl标签库;
      

  31.   

    有两种方法可以显示出来
    1.]<s:property value="#request.user.username" />
    2.${request.user.username}这两种方法都可以
      

  32.   

    楼主,你把request.setAttribute("user",user);//拼写对了试试!汗~
      

  33.   

    这么写不行吧。这个是用的struts2,不是struts1呀。