关于Struts2标签库属性值的%与#号的关系:
1.如果标签的属性值是OGNL表达式,那么无需加上%{}
2.如果标签的属性值是字符串类型,那么在字符串当中凡是出现的%{}都会被解析成OGNL表达式,解析完毕后再与其他的字符串进行拼接构造出最后的字符串值。
3.我们可以再所有的属性值上加%{},这样如果该属性值是OGNL表达式,那么标签处理类就会将%{}忽略掉
实例:
创建一个javaWeb工程,导入struts2相关jar包,配置文件。
action代码如下:
package com.ognl.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.ognl.bean.Cat; import com.ognl.bean.Person; import com.opensymphony.xwork2.ActionSupport; public class OgnlAction extends ActionSupport implements RequestAware,ApplicationAware,SessionAware { private String username; private String password; private Map<String,Object> requestMap; private Map<String,Object> sessionMap; private Map<String,Object> applicationMap; private List<Person> list = new ArrayList<Person>(); @Override public void setRequest(Map<String, Object> arg0) { this.requestMap = arg0; } @Override public void setSession(Map<String, Object> arg0) { this.sessionMap = arg0; } @Override public void setApplication(Map<String, Object> arg0) { this.applicationMap = arg0; } @Override public String execute() throws Exception { requestMap.put("hello", "world"); sessionMap.put("hello", "hello"); applicationMap.put("hello", "hello123"); Cat cat1 = new Cat("cat1",20,"red"); Cat cat2 = new Cat("cat2",30,"blue"); String[] friends1 = {"test1","test2","test3"}; String[] friends2 = {"welcome1","welcome2","welcome3"}; Map<String,String> map1 = new HashMap<String,String>(); Map<String,String> map2 = new HashMap<String,String>(); map1.put("test1", "test1"); map1.put("test2", "test2"); map2.put("hello1", "hello1"); map2.put("hello2", "hello2"); Person person1 = new Person("zhangsan",20,"bejing",friends1,cat1,map1); Person person2 = new Person("lisi",30,"shichuan",friends2,cat2,map2); list.add(person1); list.add(person2); return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<Person> getList() { return list; } public void setList(List<Person> list) { this.list = list; } }
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>Insert title here</title> </head> <body> 取属性: <s:property value="username"/><br> <s:property value="password"/><br> ---------------------------------------<br> <s:property value="#parameters.username"/> <s:property value="#parameters.password"/> <br> ------------------------------------------<br> request:<s:property value="#request.hello"/> session:<s:property value="#session.hello"/> application:<s:property value="#application.hello"/> <br> -----------------------------------------<br> person1:address:<s:property value="list[0].address"/> person2:age:<s:property value="list[1].age"/> person1:cat:name:<s:property value="list[0].cat.name"/> size:<s:property value="list.size"/> <br> <s:property value="list[0].friends[0]"/> <br> <s:property value="list[1].friends.length"/> <br> <s:property value="list[1].map['hello1']"/> <br> filtering: <s:property value="list.{? #this.name.length()>3}.size"/> <br> ----------------------------------<br> <s:iterator value="list.{? #this.name.length()>3}"> <s:property value="name"/><br> <s:property value="cat.color"/><br> <s:property value="friends.length"/><br> --------------------------<br> </s:iterator> Projection:<br> <s:iterator value="list.{age}"> <s:property/> </s:iterator> </body> </html>
运行结果如下:
上一篇文章介绍了JQuery的入门和使用,从本篇文章开始,我们就正式的进入到了JQuery的世界。
本文主要介绍JQuery选择器,为什么首要介绍这个东西呢?因为后续一系列操作都会用到这个家伙。
如果有人问你为什么要选择JQuery时,你大可告诉他说:JQuery这个家伙的选择器太强大,我基本可以通过选择器获取到页面的任何一个元素,也可以操作任何一个元素。
这就是为什么一旦进入JQuery的世界,我们就要认识它——JQuery选择器。
为了更好的铺垫后续的内容,本文首先介绍下JQuery语法。
JQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。
上篇文章的例子其实已经涵盖了JQuery的语法,比如:
$("a").click(function(event){ alert("Welcome to Xue's Blog!"); });
我们可以看到基本的语法如下:
美元符号$——定义JQuery
选择符("a")——“查询”和“查找” HTML 元素
JQuery 的click抽象为action()—— 执行对元素的操作
比如$(this).hide();//隐藏当前对象
总而言之,JQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。
JQuery选择器用得比较普遍的就是:元素选择器、属性选择器、CSS选择器。
JQuery元素选择器和属性选择器允许您通过标签名、属性名或内容对 HTML 元素进行选择。
JQuery元素选择器指的是——使用 CSS 选择器来选取 HTML 元素。
编号
实例
选取
1
$("p")
选取 <p> 元素
2
$("p.intro")
选取所有 class="intro" 的 <p> 元素
3
$("p#demo")
选取 id="demo" 的第一个 <p> 元素
JQuery使用 XPath 表达式来选择带有给定属性的元素。
编号 实例 选取 1 $("[href]") 选取所有带有 href 属性的元素 2 $("[href='#']") 选取所有带有 href 值等于 "#" 的元素 3 $("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素 4 $("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素
CSS 选择器可用于改变 HTML 元素的 CSS 属性。
如果现在给你个问题:把所有 p 元素的背景颜色更改为红色。
如果在用ExtJS的时候,是不是感觉特别麻烦,但是在JQuery的世界里就不存在了。
只要使用CSS选择器,就可以轻松解决,如下列代码:
$("p").css("background-color","red");
2.4 JQuery 选择器汇总
可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。
实例
警告框带有折行的警告框确认框提示框警告框
警告框经常用于确保用户可以得到某些信息。
当警告框出现后,用户需要点击确定按钮才能继续进行操作。
语法:
alert("文本")确认框
确认框用于使用户可以验证或者接受某些信息。
当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。
语法:
confirm("文本")提示框
提示框经常用于提示用户在进入页面前输入某个值。
当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
语法:
prompt("文本","默认值")<head>
<script type="text/javascript">
function disp_alert()
{
alert("我是警告框!!")
}
</script>
</head>
<body>
<input type="button" onClick="disp_alert()" value="显示警告框" />
</body>
</html>
<head>
<script type="text/javascript">
function disp_alert()
{
alert("再次向您问好!在这里,我们向您演示" + '\n' + "如何向警告框添加折行。")
}
</script>
</head>
<body>
<input type="button" onClick="disp_alert()" value="显示警告框" />
</body>
</html>
<head>
<script type="text/javascript">
function show_confirm()
{
var r=confirm("按下一个按钮!");
if (r==true)
{
alert("按下 确定!");
}
else
{
alert("按下 取消!");
}
}
</script>
</head>
<body>
<input type="button"