在Action中如下传值ActionContext.getContext().getSession().put("baseinfo", baseinfo);
ActionContext.getContext().put(("baseinfo", baseinfo);
ActionContext.getContext().getParameters().put(("baseinfo2",  baseinfo)baseinfo是一个类对象,其定义为public class Baseinfo implements java.io.Serializable {
private String name;
getter and setter...
}在页面中如下取值 alert("1:baseinfo="+"<%=session.getAttribute("baseinfo")%>");
alert("2:baseinfo="+"<%=request.getAttribute("baseinfo")%>");
alert("3:baseinfo2="+"<%=request.getAttribute("baseinfo2")%>");
alert("4:baseinfo="+'${session.baseinfo}');
alert("5:baseinfo="+'${parameters.baseinfo}');
alert("6:baseinfo2="+'${parameters.baseinfo2}');
alert("7:baseinfo.name="+'<s:property value="#session.baseinfo.name" />');
alert("8:baseinfo.name="+'<s:property value="#parameters.baseinfo.name" />');
alert("9:baseinfo2.name="+'<s:property value="#parameters.baseinfo2.name" />');运行后 alert("1:baseinfo="+"com.test.moduls.Baseinfo@1116cae");
alert("2:baseinfo="+"com.test.moduls.Baseinfo@1116cae");
alert("3:baseinfo2="+"null");
alert("4:baseinfo="+'com.test.moduls.Baseinfo@1116cae');
alert("5:baseinfo="+'');
alert("6:baseinfo2="+'');
alert("7:baseinfo.name="+'wang);
alert("8:baseinfo.name="+'');
alert("9:baseinfo2=.name"+'');请教各位以上是什么原因?
那么我想通过
ActionContext.getContext().put(("baseinfo", baseinfo);
ActionContext.getContext().getParameters().put(("baseinfo2",  baseinfo)
的方式来传值
在页面该怎么取呢?又假如,
ActionContext.getContext().put(("baseinfo", baseinfo);
中的baseinfo是一个Set对象呢谢谢!

解决方案 »

  1.   

    恩,OGNL 有点晕,顶你一下!
      

  2.   

    Other (non-root) objects in the ActionContext can be rendered use the # notation.<s:property value="#session.mySessionPropKey"/> or
    <s:property value="#session['mySessionPropKey']"/> or
    <s:property value="#request['myRequestPropKey']"/>The ActionContext is also exposed to Action classes via a static method.ActionContext.getContext().getSession().put("mySessionPropKey", mySessionObject);
    上面的是struts2的官方文档的下面是我给你的例子  ActionContext.getContext().getSession().put("user" , getUsername());
    ${sessionScope.user}ActionContext.getContext().put("stuList", stuList);
    <s:iterator value="stuList" status="stu">
      <td>
        <s:property value="stuName" />
      </td>
    </s:iterator>
      

  3.   

    不了解,session和request中都存在baseinfo的值
    看下ActionContext.getContext()源代码可能会明白
      

  4.   


    正解!谢谢!但是,如果放到session或application呢?
    我试了一下如下,
    在action中ActionContext.getContext().getSession().put("massage",massage);在页面<s:iterator value="massage" status="stu">
        00:<s:property value="description" /><br>
    </s:iterator>无法取出,而通过
    ActionContext.getContext().put("massage", massage);
    却可以的。
      

  5.   


    ActionContext.getContext().getSession().put("baseinfo", baseinfo);
    ActionContext.getContext().put(("baseinfo", baseinfo);现在没什么问题了(application的没有试),但下面这种方式的传值无法解决ActionContext.getContext().getParameters().put(("baseinfo2",  baseinfo)我添加了一些代码
    在action中alert("10:baseinfo="+'<s:property value="#session.['baseinfo']" />');
    alert("11:baseinfo="+'<s:property value="#request.['baseinfo']" />');
    alert("12:baseinfo2="+'<s:property value="#request.['baseinfo2']" />');
    alert("13:baseinfo="+'<s:property value="#session.['baseinfo'].name" />');
    alert("14:baseinfo="+'<s:property value="#request.['baseinfo'].name" />');
    alert("15:baseinfo2="+'<s:property value="#request.['baseinfo2'].name" />');
    alert("16:baseinfo="+'<s:property value="#session.['baseinfo']['name']" />');
    alert("17:baseinfo="+'<s:property value="#request.['baseinfo']['name']" />');
    alert("18:baseinfo2="+'<s:property value="#request.['baseinfo2']['name']" />');运行后:alert("10:baseinfo="+'com.test.moduls.Applicantbaseinfo@9a5d54');
    alert("11:baseinfo="+'com.test.moduls.Applicantbaseinfo@9a5d54');
    alert("12:baseinfo2="+'');
    alert("13:baseinfo="+'wang');
    alert("14:baseinfo="+'wang');
    alert("15:baseinfo2="+'');
    alert("16:baseinfo="+'wang');
    alert("17:baseinfo="+'wang');
    alert("18:baseinfo2="+'');当然,项目可以继续做了。
    以前查到的网上的资料,就只是看到
    <s:property value="#parameters.property" />

    <s:property value="#parameters.['property']" />
    的形式
    对表达式中用到的request的概念一闪而过,治学不严谨啊!看看有没有DX对ActionContext.getContext().getParameters().put(("baseinfo2",  baseinfo)作个说明,期待ing
    晚上再结帖、给分。感谢 zl3450341 ! 也感谢参与的各位!
      

  6.   

    可以用request虽然struts2里面没有但你可以定义一个
      

  7.   


    你可以想下,request就是session的一个范畴,如果说在中国有个中央电视塔,难道说在中国的北京有个中央电视塔就有错吗?
      

  8.   


    晕!原来的贴错了
    应该是这样子:我添加了一些代码alert("10:baseinfo="+'<s:property value="#session['baseinfo']" />');
    alert("11:baseinfo="+'<s:property value="#request['baseinfo']" />');
    alert("12:baseinfo2="+'<s:property value="#request['baseinfo2']" />');
    alert("13:baseinfo="+'<s:property value="#session['baseinfo'].name" />');
    alert("14:baseinfo="+'<s:property value="#request['baseinfo'].name" />');
    alert("15:baseinfo2="+'<s:property value="#request['baseinfo2'].name" />');
    alert("16:baseinfo="+'<s:property value="#session['baseinfo']['name']" />');
    alert("17:baseinfo="+'<s:property value="#request['baseinfo']['name']" />');
    alert("18:baseinfo2="+'<s:property value="#request['baseinfo2']['name']" />');session['baseinfo']  中间没有'.'运算符