Struts2_OGNL和值栈

来源:互联网 发布:手机统计软件 编辑:程序博客网 时间:2024/06/05 03:09

人生的旅途,前途很远,也很暗。然而不要怕,不怕的人的面前才有路。—— 鲁 迅

之前在逛论坛的时候看到过一篇关于OGNL和值栈的文章,觉得写得还不错,大家可以看一下http://blog.csdn.net/hanxuemin12345/article/details/38559979

下面是我写的代码 和 一点点补充。

注意:

①在迭代list的时候,一定要加#。
<s:property value="#u.username"/>

②在迭代map的时候,不仅要加#,还要加value。
<s:property value="#u.value.username"/>

访问的URL:
http://localhost:8080/dValueStack/demo

MyAction代码:

package com.lee.action;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.lee.domain.User;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.util.ValueStack;public class MyAction {    //对象属性    User user=new User();    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public MyAction(User user) {        this.user = user;    }    public MyAction() {        super();    }    //普通属性    private String str;    public String getStr() {        return str;    }    public void setStr(String str) {        this.str = str;    }    //list集合属性    private List<User> list;    public List<User> getList() {        return list;    }    public void setList(List<User> list) {        this.list = list;    }    //Map集合属性    private Map<String,User> map;    public Map<String, User> getMap() {        return map;    }    public void setMap(Map<String, User> map) {        this.map = map;    }    public String execute(){        //对象属性赋值         user = new User(1 ,"我是用户名","做人地道,否则会有错误信息");         //普通属性赋值         str="我是普通属性";         //给list属性赋值         list=new ArrayList<>();         for (int i = 0; i < 3; i++) {            list.add(new User(i,"123456"+i,"我是错误信息"+i));        }         //给Map集合赋值         map=new HashMap<>();         for (int j = 0; j < 3; j++) {            map.put("aa"+j, new User(j,"654321"+j,"我是正确信息"+j));        }        //获取值栈        ValueStack valueStack=ActionContext.getContext().getValueStack();         //给值栈赋值         valueStack.push(user);        return "success";    }}

welcome.jsp代码:

<%@ page language="java" pageEncoding="UTF-8" %><%@ page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html ><html><head><meta  charset="UTF-8"><title>title</title></head><body><h1>取对象属性</h1><h2>可以用   对象名.属性名 或者标签  两种方式取 </h2>${user.username }<br><s:property value="user.error"/><hr><h1>值栈取值</h1><h2>可以用 属性名 或者标签 两种方式取</h2>${id }<br><s:property value="error"/><hr><h1>取普通属性</h1><h2>可以用 属性名 和 标签两种方式取</h2><s:property value="str"/><br>${str }<hr><h1>取list集合属性</h1><h2>用迭代方式取,注意:一定要加#</h2><s:iterator value="list" var="u">    <s:property value="#u.id"/>:    <s:property value="#u.username"/>:    <s:property value="#u.error"/><br></s:iterator><hr><h1>取Map集合属性</h1><h2>用迭代方式取,注意:一定要加#,而且有value</h2><s:iterator value="map" var="u">    <s:property value="#u.value.id"/>:    <s:property value="#u.value.username"/>:    <s:property value="#u.value.error"/><br></s:iterator><s:debug/></body></html>

User代码:

package com.lee.domain;public class User {    private String username;    private Integer id;    private String error;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getError() {        return error;    }    public void setError(String error) {        this.error = error;    }    public User(Integer id,String username,  String error) {        super();        this.username = username;        this.id = id;        this.error = error;    }    public User() {        super();    }}

struts.xml 代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"    "http://struts.apache.org/dtds/struts-2.5.dtd">    <struts>        <package name="root" namespace="/" extends="struts-default">            <action name="demo" class="com.lee.action.MyAction">                <result>/welcome.jsp</result>            </action>        </package>    </struts>

web.xml代码:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">  <filter>    <filter-name>ApacheStruts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>ApacheStruts2</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>

这里写图片描述

原创粉丝点击