<s:set name="student" value="@com.abc.StudentFactory@getStudent(#id)"></s:set>        
为什么struts2标签中的set可以这样用@来调用方法,而且只能是静态方法,而且只能调用一次     
<s:set name="student" value="@com.abc.StudentFactory@getStudent(#id)@getName()"></s:set>   
这样不行的   
这属性的student能用<%%>获得进行处理吗?

解决方案 »

  1.   

    这属性的student能用<%%>获得进行处理吗?这个是肯定可以的
    还可以试着使用el标签比较方便
      

  2.   

    @调用静态方法这个是OGNL表达式就是有这种功能, 想知道为什么那应该去问问设计OGNL的人吧.!
    至于不能连续调用的这个问题,  你自己想一下, 你第一次调用的返回结果是什么.?是个对象吧.? 那么OGNL表达式支持方法调用(静态非静态都可以), 你第一次返回值了以后, 返回一个Stu对象,那么stu.name或者stu.getName()不就可以完成你想要的.?
      

  3.   

    你要用<%%>处理时可以的,  默认是存到OGNL Context去的
    <%
        ActionContext.getContext().getContextMap.get(key);
    %>
      

  4.   


    还有个
    这属性的student能用<%%>获得进行处理吗?
    获得的student想放入<%%>中进行处理
    就是标签中的对象怎么能放入页面代码中进行处理
      

  5.   

    是可以的.!
    你<s:set>的时候加一个属性var="stu"; 那么这个叫stu的变量会被存到OGNL Context中(就是一个Map).
    刚才上面的<%%>的代码
    ActionContext.getContext().getContextMap().get("stu");可以拿到你想要的值
    ContextMap 就是OGNL Context了.! 
      

  6.   

    name和id属性都过时了.. 用var存
      

  7.   

    ActionContext.getContext().getContextMap().get("stu");这句放到<%%>中有点错误,好像ActionContext找不到?