zoukankan      html  css  js  c++  java
  • 关于struts中Ognl和iterator配合再次理解

    Person.jsp (struts.xml中省略)

    package com.mzy.entity;
    
    public class Person {
    	private String name;
    	private String sex;
    	private int age;
    	
    	public Person() {
    		super();
    	}
    	public Person(String name, String sex, int age) {
    		super();
    		this.name = name;
    		this.sex = sex;
    		this.age = age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	@Override
    	public String toString() {
    		return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
    	}
    }
    

    TagPersonAction.java

    package com.mzy.tag;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.mzy.entity.Person;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class TagPersonAction extends ActionSupport{
    	
    	private static final long serialVersionUID = 7351425024147100121L;
    	
    	List<Person> persons;
    	
    	public List<Person> getPersons() {
    		return persons;
    	}
    
    
    	public void setPersons(List<Person> persons) {
    		this.persons = persons;
    	}
    
    	public String execute() {
    		
    		persons = new ArrayList<Person>();
    		String name = "aaa";
    		int age = 10;
    		String sex;
    		for (int i=0 ;i<10; i++) {
    			name = name + i;
    			age += i;
    			if (i%2 == 0) {
    				sex = "男";
    			} else {
    				sex = "女";
    			}
    			persons.add(new Person(name, sex, age));
    		}
    		
    		return SUCCESS;
    	}
    }
    

    jsp中:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Person list start here!</title>
    </head>
    <body>
    
    <table cellspacing="0" border="1">
    	<th>姓名</th>
    	<th>性别</th>
    	<th>年龄</th>
    	<!-- 
    		注意:
    			这里不写var的时候,默认是压入值栈中的!但是压入 值栈的每一次的person
    			默认都是iterator本身去取,当然也可以使用property去取值,但是有个地方出错了!!!
    			Person已经是在外面了!!
    			所以不是person.name 而是 name
    			        不是person.age 而是age
    			   ...  ... 
    			如果是第一层,直接取值;如果是JavaBean的对象,直接Ognl直接会使用getter方法取值!
    		
    			在使用struts的iterator循环时,不写var只会压到值栈中,写了var会在ActionContext中也压一份!
    			值栈中的每次的person对象,会被iterator在每次循环结束之后,从值栈中pop出来,但是ActionContext
    			的话,就是每次覆盖前一次,最后会保留最后一次的Person对象在ActionContext中!
    	 -->
    	<s:iterator value="persons" var="person" status="s">
    		<%-- <s:debug></s:debug> --%>
    		<%-- <s:property/> --%>
    		<%-- <s:property/> --%>
    		<%-- <s:if test='#person.sex=="男"'> --%>
    		<s:if test='sex=="男"'>
    		<tr <s:if test="#s.odd">style="background-color:pink"</s:if>>
       			<td>
        			<%-- <s:property value="#person.name"/> --%>
        			<s:property value="name"/>
       			</td>
       			<td>
       				<%-- <s:property value="#person.sex"/> --%>
       				<s:property value="sex"/>
       			</td>
       			<td>
       				<%-- <s:property value="#person.age"/> --%>
       				<s:property value="age"/>
       			</td>
     		</tr>
     	  </s:if>
    	</s:iterator>
    	<%-- <s:debug></s:debug> --%>
    </table>
    
    </body>
    </html>


  • 相关阅读:
    函数
    字符编码和文件处理
    内置方法
    day6课后复习
    第四十篇、美颜篇
    第三十八篇、给UITabBar按钮的动画效果
    第三十九篇、NavBar动态隐藏、设置透明、毛玻璃效果
    第九篇、Swift的基本使用
    第三十七篇、毛玻璃效果
    第三十六篇、webService
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053399.html
Copyright © 2011-2022 走看看