日期:2014-05-17  浏览次数:20690 次

s标签获取action的值为空
代码如下,从action里传了值过去,但在t.jsp中还是显示了666666,就是说 #l==null 判断为true,用c标签的话连list里的1、2、3都能迭代出??
但是我把HttpServletRequest req = ServletActionContext.getRequest();
改成ActionContext req = ActionContext.getContext();就一切正常了,t.jsp没有输出66666

Java code

public class TestAction {
    public String test(){
        List<Integer> l=new ArrayList<Integer>();
        l.add(1);
        l.add(2);
        l.add(3);
        HttpServletRequest req = ServletActionContext.getRequest();
        req.setAttribute("l", l);
        return "success";
    }
}



struts.xml
HTML code

<struts>
    <package name="st9" extends="struts-default">
        <action name="test" class="TestAction">
            <result name="success">t.jsp</result>        
        </action>    
    </package>
</struts>



t.jsp
HTML code

<s:if test="#l==null">666666</s:if>



------解决方案--------------------
楼主自问自答了~~~~~
------解决方案--------------------
使用 HttpServletRequest req = ServletActionContext.getRequest();
在页面取要这样<s:if test="#request.l==null">666666</s:if>
建议多看看<s:debug></s:debug>
------解决方案--------------------
action没有继承ActionSupport