zoukankan      html  css  js  c++  java
  • Struts2取值

    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 r = ServletActionContext.getRequest();

    HttpServletResponse resp = ServletActionContext.getResponse();

    struts2还提供了以下接口:

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

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

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

  • 相关阅读:
    [Go] 解决空接口 interface{} cannot use (type []string) as type []interface {}
    [Linux] 脚本中的set -e有什么作用
    [Go] 解决go test 时 testing: warning: no tests to run
    [Go] go for range循环map是无序的 变成有序
    [Linux] ubuntu 32位 i686 安装docker
    [Git] git checkout 恢复未add的修改文件
    [MySQL] in 子查询出现DEPENDENT SUBQUERY问题
    [MySQL] group by 聚合函数的原理和聚合限制原因SELECT list is not in GROUP BY clause and contains nonaggregated column
    [MySQL]mysql的ANY_VALUE()函数 解决 ONLY_FULL_GROUP_BY 模式
    [Go] GODEBUG=inittrace=1 查看所有执行的init函数
  • 原文地址:https://www.cnblogs.com/564085446java/p/3611444.html
Copyright © 2011-2022 走看看