struts2 取值问题

引用

“#”主要有三种用途:

   1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
       名称   作用 例子
      parameters    包含当前HTTP请求参数的Map    #parameters.id[0]作用相当于request.getParameter("id")
      request   包含当前HttpServletRequest的属性(attribute)的Map    #request.userName相当于request.getAttribute("userName")
      session   包含当前HttpSession的属性(attribute)的Map   #session.userName相当于session.getAttribute("userName")
      application   包含当前应用的ServletContext的属性(attribute)的Map     #application.userName相当于application.getAttribute("userName")
      attr 用于按request > session > application顺序访问其属性(attribute)    #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
   2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100};
   3. 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。


“%”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如在Ognl.jsp中加入以下代码:
<hr />
    <h3>%的用途</h3>
    <p><s:url value="#foobar['foo1']" /></p>
    <p><s:url value="%{#foobar['foo1']}" /></p>


“$”有两个主要的用途 : 
   1. 用于在国际化资源文件中,引用OGNL表达式,例子请参考《在Struts 2.0中国际化(i18n)您的应用程序》
   2. 在Struts 2配置文件中,引用OGNL表达式,如
      <action name="AddPhoto" class="addPhoto">
                  <interceptor-ref name="fileUploadStack" />            
                  <result type="redirect">ListPhotos.action?albumId=${albumId}</result>
              </action>


<!DOCTYPE html PUBLIC 
	"-//W3C//DTD XHTML 1.1 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="com.snda.struts2.User" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Index</title>
<s:head />
</head>
<body>
<s:debug></s:debug>
<%
	//System.out.println(request.getParameter("name"));//取不到值 
	System.out.println(request.getAttribute("name"));//可以取到
	User u = (User) request.getAttribute("user");
	System.out.println(u.getFirstName());
	//System.out.println(user.getFirstName());

	//Object oa = request.getAttribute("struts.valueStack");
	//System.out.println(oa);
%>
${name}
<br />
${user.firstName}
${user.name}
<s:property value="name"/>
<!--  值栈取值是要考虑深度的 -->
<s:property value="[0].name" />
<s:property value="[1].name" />
<s:property value="[2].name" />
<s:property value="[3].name" />
<s:property value="[4].name" />
${number}
<s:property value="number" />
request 属性是 ${requestScope.name}<br> 
session 属性是 ${sessionScope.name}<br> 
application 属性是 ${applicationScope.name}<br> 
<!-- 取url参数的 -->
param 属性是${param.name}<br>
<!-- 可以取到 -->
<s:property value="#request['name']"/>
<s:property value="#parameters['name']"/>
<s:property value="#session['name']"/>
<s:property value="#application['name']"/>
</body>
</html>

你可能感兴趣的:(c,jsp,struts,XHTML,sun)