Struts标签和OGNL配合使用

iterator 标签

使用<s:iterator/>标签遍历列表
1,在Action中声明list对象 生成getset方法

package org.ccit.com.web.action;

import com.opensymphony.xwork2.ActionSupport;
import org.ccit.com.domain.Student;

import java.util.ArrayList;
import java.util.List;

/**
 * @program: struts2_06
 * @description
 * @author: LIANG
 * @create: 2021-02-04 19:35
 **/
public class listAction extends ActionSupport {
    private List<Student> stuList;
    public List<Student> getStuList() {
        return stuList;
    }

    public void setStuList(List<Student> stuList) {
        this.stuList = stuList;
    }
    public String list(){
        stuList= new ArrayList<Student>();
        stuList.add(new Student("张三","100"));
        stuList.add(new Student("李四","111"));
        stuList.add(new Student("李四","111"));
        stuList.add(new Student("李四","111"));
        stuList.add(new Student("李四","111"));
        stuList.add(new Student("李四","111"));
        return SUCCESS;
    }
}

value:OGNL表达式 列标名称
var代表为取出的对象 (每次取出的单个对象都会被存入ActionMap中 所以用#号取出数据)
在这里插入图片描述
status:
在这里插入图片描述

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
    @program: struts2_05
    @description
    @author: LIANG
    @create: 2021-01-26 18:03
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>学生列表</title>
    </head>
    <body>
       <table border="1">
           <tr>
               <td>编号</td>
               <td>姓名</td>
               <td>密码</td>
           </tr>
           <s:iterator value="stuList" var="stu" status="st">
               <tr>
                   <td>
                       <s:property value="#st.getIndex()"></s:property>
                       ${st.getIndex()}
                   </td>
                   <td>
                       <s:property value="#stu.username"></s:property>
                       ${stu.username}
                   </td>
                   <td>
                       <s:property value="#stu.password"></s:property>
                       ${stu.password}
                   </td>
               </tr>
           </s:iterator>
       </table>
        <s:debug></s:debug>
    </body>
</html>

注:使用EL表达式更简便

OGNL投影:添加过滤条件

.?#::选出符合条件的集合 如:stuList.{?#this.age>20}
.^# :选出第一个符合条件的
.$#:选出最后一个符合条件的

如:

<table border="1">
   <tr>
       <td>编号</td>
       <td>姓名</td>
       <td>年龄</td>
   </tr>
   <s:iterator value="stuList.{?#this.age>18}" var="stu" status="st">
       <tr>
           <td>
               <s:property value="#st.getIndex()"></s:property>
           </td>
           <td>
               <s:property value="#stu.username"></s:property>
           </td>
           <td>
               <s:property value="#stu.age"></s:property>
           </td>
       </tr>
   </s:iterator>
</table>

在这里插入图片描述
使用指定属性投影:不使用var属性

<table border="1">
   <tr>
       <td>年龄</td>
   </tr>
   <s:iterator value="stuList.{age}" var="stu" status="st">
       <tr>
           <td>
               <s:property></s:property>
           </td>
       </tr>
   </s:iterator>
</table>

在这里插入图片描述

#号用法

取contextMap中key时使用,例如<s:property value="#name" />
OGNL中创建Map对象时使用,例如:<s:radio list="#{‘male’:‘男’,‘female’:‘女’}" />

$号用法

在JSP中使用EL表达式时使用,例如$ {name}
在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。struts.xml——>${@java.net.URLEncoder.encode(filename)}

%号用法

在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如<s:property value=“OGNL Expression” />
还有一部分标签,value属性的取值就是普通字 符串,例如<s:textfield value=“username”/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。例如<s:textfield value="%{username}"/>。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值