Struts标签取值

    最近的任务涉及到了Struts2标签取值,之前的知识有点模棱两可了,只记得如果在Action里面定义了属性,并给该属性添加了get和set方法就可以在jsp页面通过写和属性名一致的方法来获取到这些值。

    还有一种方式,可以在Action里封装bean,bean里面封装好了一些属性和属性的get、set方法,就可以在jsp里面通过使用Struts标签的name来获取。

    就记得这些了,有些细节没有想起来,网上发现两篇博文,总结于此:


Struts2标签取值方式

原文地址:http://zhaohe162.blog.163.com/blog/static/38216797201142611031437/

1.标签取值方式一

    通过<s:property value="" />取值

    当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
    当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
    例子:
    假设某Action中有person成员变量,在application中存在company属性
    那么我们可以通过以下方法取值:
    <s:property value="person.name" />
    <s:property value="#person.name" />
    <s:property value="company.name" /> //无法取到,因为company不在action的valueStack中
    <s:property value="#company.name" />

2.标签取值方式二

任意的<s:/>标签内使用%{}来取值

当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
例子:
假设某Action中有person成员变量,在application中存在company属性
<s:textfield name="person.name" value="person.name" /> //错误,value会直接显示person.name字样
<s:textfield name="person.name" value="%{person.name}" />
<s:textfield name="person.company.name" value="%{#company.name}" />
<s:textfield name="person.company.name" value="%{#attr.company.name}" />

3.获取JSP页面的request,session,application中的属性

   在页面中可以这样获取:

<td>${applicateionScope.counter}</td>

<td>${sessionScope.counter}</td>

<td>${requestScope.counter}</td>

或者直接这样用:${属性} ${userBean.username}。userBean可以是request或session中的对象。

struts2中的Action代码中的内容为:

ActionContext ctx = ActionContext.getContext();

ctx.getApplication.put("counter",new Integer(5));

ctx.getSession.put("counter",new Integer(5));

ctx.put("counter",new Integer(5));

ctx.put就是直接设置request的值。

也可以使用以下方式获得request:

HttpServletRequest request = ServletActionContext.getRequest();

HttpServletResponse response = ServletActionContext.getResponse();

struts2还提供了以下接口:

ServletContextAware:Action实现该接口,可以直接访问ServletContext。

ServletRequestAware:Action实现该接口,可以直接访问HttpServletRequest。

ServletResponseAware:Action实现该接口,可以直接访问HttpServletResponse。

Struts2中s标签取值的小结 

原文地址:http://mmz06.blog.163.com/blog/static/12141696201061114638229/

1、  首先在ACTION中得到request对象,代码如下:

//获得Request对象

Map<String,Object> request = (Map<String,Object>) ActionContext.getContext().get("request");

 

2、  构造一个User对象代码如下:

publicclass User

{

    private String username;

    private String userpswd;

    public User(String username, String userpswd)

{

    this.username = username;

    this.userpswd = userpswd;

}

    public String getUsername()

    {

        returnusername;

    }

    publicvoid setUsername(String username)

    {

        this.username = username;

    }

    public String getUserpswd()

    {

        returnuserpswd;

    }

    publicvoid setUserpswd(String userpswd)

    {

        this.userpswd = userpswd;

    }

}

 

3、  request对象设置值,代码如下:

//设置单个值

reuqset.put(“userSize”,2);

//构造Map数组

Map<String,Object> maxUserList = new HashMap[2]();

for(int i = 0; i < 2; i ++)

{

    maxUserList[i] = new HashMap<String, Object>();

     //上级用户

     maxUserList[i].put(“rootUser”, new User(“admin” + i, “1”));

     //下级

     List<User> minUser = new ArrayList<User>();

     minUser.add(new User(“user” + i, “1”));

maxUserList[i].put(“minUser”,minUser);

}

//设置Map数组

request.put(“maxUserList”, maxUserList);

 

4、  在页面上用s标签取得步骤3所设置的值

<!--request中的单个值-à

<s:propertyvalue=”#request.userSize” />

<!--request中的Map数组(这里用表格显示)-à

<table>

<tr><td>序号</td><td>姓名</td><td>密码</td><td>下级</td></tr>

<s:iterator value=”#request[maxUserList]” status=”st”>

<tr>

     <td><s:propertyvalue=”#st.index” /></td>

<td><s:propertyvalue=”rootUser.username” /></td>

<td><s:propertyvalue=”rootUser.userpswd” /></td>

<td>

    <table bgcolor=’pink’>

    <s:iterator value=”minUser” />

        <tr>

            <td><s:propertyvalue=”username” /></td>

<td><s:propertyvalue=”userpswd” /></td>

</tr>

</s:iterator>

</table>

</td>

</tr>

</s:iterator>

</table>


你可能感兴趣的:(struts2)