【Struts2】【Struts2的OGNL表达式】

简介

  1. el表达式${属性}取值顺序:request>>Context>>Root
  2. <s:XX>标签下的action,直接使用action名即可,不需要上下文路径和命名空间.
  3. <s:from>表单具有自动回写功能.

1.通用标签

1. 判断

<s:if test="条件">执行体</s:if>

<!--num存于Context下的request中-->
<% request.setAttribute("num", 100); %>

<s:if test="#request.num>50">大于50</s:if>
<s:else>小于50</s:else>
2.循环
  • 自行循环(val=索引)
    <s:iterator begin="0" end="10" step="1" var="索引">
<!--循环输出-->
<s:iterator begin="1" end="10" step="2" var="index">
        <s:property value="#index"/>
</s:iterator><br/>
<!--输出1 3 5 7 9-->
  • 有值的循环(方式2 val=元素)
<% request.setAttribute("arr",new Integer[]{11,22,44,66,77}); %>
<!--方式1-->
<s:iterator begin="0" end="10" step="1" var="index">
    ${arr[index]}
</s:iterator><br/>
<!--方式2-->
<s:iterator value="#request.arr" var="val">
    <s:property value="#val"/>
</s:iterator>
<!--输出11 22 44 66 77 -->
3.超链接

<s:a action="" namespace="">XXX</s:a>
1. namespace=命名空间
2. action=action名
3. 在超链接中加入<s:param>标签,可以添加参数

<!--访问 域名/上下文路径/myPKG/123.action-->
<s:a action="123" namespace="myPKG">XXX</s:a>

<!--在网页上输出  XXXmyPKG/123.action -->
<s:url action="123" namespace="myPKG">XXX</s:url>

<!--添加参数 employee.id,值为Content容器的#employee.id-->
<s:a action="XXX"><s:param name="employee.id" value="#employee.id"/>删除</s:a>

2.表单标签

  • 普通框
隐藏框:   <s:hidden name="XX" value="XX"/>
小文本框: <s:textfield name="XX" value="XX"/>
密码框:   <s:password name="XXX"/>
大文本框: <s:textarea name="xxx"/>
提交框:   <s:submit name="xxx"/>
重置框:   <s:reset name="XXX"/>
  • 单选,复选,下拉
    • headerKey=”null” ;下拉框的默认值
    • headerValue=”请选择”;下拉框的默认视图
    • multiple=”true”;下拉框展开

方式1:传入#{Key:Value, Key:Value} key等价于每个选项的id,value等价于每个选项的文本内容

单选框
<s:radio name="XXX" list="#{'1':'选项1','2':'选项2'}"></s:radio>
复选框
<s:checkboxlist name="XXX" list="#{'1':'选项1','2':'选项2'}"/>
下拉框
<s:select name="XXX" list="#{'1':'选项1','2':'选项2'}"/>

方式2:传入一个list(且list中都是对象)

  • listKey=”id” :表示每个选项的id,是每个对象的id
  • listValue=”name”:表示每个选项的文本,是每个对象的文本

Action类响应发送一个list

        ActionContext ctx = ActionContext.getContext();
        List<Hobby> list =new ArrayList<>();
        list.add(new Hobby(1L, "篮球"));
        list.add(new Hobby(2L, "乒乓球"));
        list.add(new Hobby(3L, "足球"));
        list.add(new Hobby(4L, "排球"));
        ctx.put("list", list);

jsp

单选框
<s:radio name="XXXX" list="#list" listKey="id" listValue="name"/>
复选框
<s:checkboxlist name="XXXX" list="#list" listKey="id" listValue="name"/>
下拉框
<s:select name="XXXX" list="#list" listKey="id" listValue="name"/>

这里写图片描述

3.自动回写功能(将对象存入Root中)

  • Action类中传递对象
    • hobbys,复选框的内容(传入Context)
    • jobs, 下拉框的内容(传入Context)
    • user, 要回写的对象(传入Root)
//全局变量,将user对象传入Root
    private User user=new User("Armo", 11, new Hobby(1L, "篮球"), "man", new Job(1L, "java"));
    public User getUser() {
        return user;
    }
//方法体
        //hobbys 
        List<Hobby> hobbys=new ArrayList<>();
        hobbys.add(new Hobby(1L, "篮球"));
        hobbys.add(new Hobby(2L, "足球"));
        //jobs
        List<Job> jobs=new ArrayList<>();
        jobs.add(new Job(1L, "java"));
        jobs.add(new Job(2L, "C++"));

        //放入Context
        ActionContext ctx = ActionContext.getContext();
        ctx.put("jobs", jobs);
        ctx.put("hobbys", hobbys);

JSP中
name=”属性”

姓名:<s:textfield name="user.name"/></br>
年龄:<s:textfield name="user.age"/>
爱好:<s:checkboxlist name="user.hobby.id" list="#hobbys" listKey="id" listValue="name"/><br/>
性别:<s:radio name="user.sex"  list="#{'man':'男','girl':'女'}" ></s:radio><br/>
工作:<s:select name="user.job.id" list="#jobs" listKey="id" listValue="name"/>

显示结果
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值