struts2中action以及request中参数的获取方法
经过struts2"加工"的request里面内容分布是下面这样的
{
?? ?"request":{
?? ? ? ?"attrib1":"attrib1",
?? ? ? ?"attrib2":"attrib2",
?? ? ? ?"valuestack":{
?? ? ? ? ? ?"actioncontext":"actioncontext",
?? ? ? ? ? ?"useraction":[
?? ? ? ? ? ? ? ?"property1",
?? ? ? ? ? ? ? ?"property2"
?? ? ? ? ? ?]
?? ? ? ?}
?? ?}
}
request里面有个ValueStack的东西,里面包含了一个ActionContext和Action本身。
而ActionContext里面又包含了以Map形式展现了的request,session,application等这些scope。
?
你可以在action中调用servletActionContext获得HttpServletReqeust对象,直接放入request中,那这个属性就成了上面的attrib1,attrib2。(官方不推荐直接在action中用到servlet API)你也可以把属性设在action中,那就成了上面的property1,property2了
?
在页面上,这两者都可以用<s:property/>标签取得,但是取得方法是不一样的,property1,2可以直接用
<s:property value="property1"/>
?
这样取到
但是如果你用同样方法取attrib1,如<s:property value="attrib1"/>则什么也不会得到。
如何获得attrib1? 如何用<s:property>获取直接存在request中的属性?
是通过ognl表达式 ,<s:property value="#request.attrib1"/> 这样就行了。