<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>登陆页面</h1>
<form action="login">
姓名:<input type="text" name="user.name"/><br/>
密码:<input type="password" name="user.pwd"/><br/>
<input type="submit" value="登陆"/>
</form>
<s:textarea name="personal" cols="10" rows="5" label="个人简历"></s:textarea>
<h3>使用name和list属性,list属性的值是一个列表</h3>
<s:form>
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"/>
</s:form>
<h3>使用name和list属性,list属性的值是一个Map</h3>
<s:form>
<s:select label="最高学历" name="education" list="#{1:'高中',2:'大学',3:'硕士',4:'博士'}"/>
</s:form>
<h3>使用headerKey和headerValue属性设置header选项</h3>
<s:form>
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"
headerKey="-1" headerValue="请选择您的学历"/>
</s:form>
<h3>使用emptyOption属性在header选项后添加一个空的选项</h3>
<s:form>
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"
headerKey="-1" headerValue="请选择您的学历"
emptyOption="true"/>
</s:form>
<h3>使用multiple属性设置多选</h3>
<s:form>
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"
headerKey="-1" headerValue="请选择您的学历"
emptyOption="true"
multiple="true"/>
</s:form>
<h3>使用size属性设置下拉框可显示的选项个数</h3>
<s:form>
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"
headerKey="-1" headerValue="请选择您的学历"
emptyOption="true"
multiple="true" size="8"/>
</s:form>
实例:
<s:form name="test">
<s:doubleselect label="请选择所在省市"
name="province" list="{'四川省','山东省'}" doubleName="city"
doubleList="top == '四川省' ? {'成都市', '绵阳市'} : {'济南市', '青岛市'}" />
</s:form>
<s:form>
<s:checkboxlist name="interest" list="{'足球','篮球','排球','游泳'}" label="兴趣爱好"/>
</s:form>
<s:submit type="image" method="login" src="images/login.jpg"></s:submit>
实例2.<s:submit type="button" action="selectTag" method="login" label="登陆"></s:submit>
<s:form>
<!-- 使用简单集合来生成可上下移动选项的下拉选择框 -->
<s:updownselect name="a" label="请选择您喜欢的图书" labelposition="top"
moveUpLabel="向上移动"
list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , 'JavaScript: The Definitive Guide'}"/>
</s:form>
例子:
<s:head/>
<s:form>
<s:optiontransferselect
label="最喜爱的图书"
name="javaBook"
list="{'《Java Web开发详解》', '《Struts 2深入详解》', '《Java快速入门》'}"
doubleName="cBook"
doubleList="{'《VC++深入详解》', '《C++ Primer》', '《C++程序设计语言》'}"/>
</s:form>
<s:form>
<s:optiontransferselect
label="最喜爱的图书"
name="book1"
leftTitle="Java图书"
rightTitle="C/C++图书"
list="{'《Java Web开发详解》', '《Struts 2深入详解》', '《Java快速入门》'}"
headerKey="-1"
headerValue="--- 请选择 ---"
emptyOption="true"
doubleName="book2"
doubleList="{'《VC++深入详解》', '《C++ Primer》', '《C++程序设计语言》'}"
doubleHeaderKey="-1"
doubleHeaderValue="--- 请选择 ---"
doubleEmptyOption="true"
addToLeftLabel="向左移动"
addToRightLabel="向右移动"
addAllToLeftLabel="全部左移"
addAllToRightLabel="全部右移"
selectAllLabel="全部选择"
leftUpLabel="向上移动"
leftDownLabel="向下移动"
rightUpLabel="向上移动"
rightDownLabel="向下移动"/>
</s:form>
<%java.util.Date date = new java.util.Date(); %>
<%=date%>
<s:date name="time" format="" />
</body>
</html>
分享到:
相关推荐
**ognl标签的使用案例** OGNL (Object-Graph Navigation Language) 是一种强大的表达式语言,主要用于在Java应用程序中获取和设置对象属性。在Web开发领域,尤其是与Struts2框架结合时,OGNL标签被广泛用于视图层,...
在使用OGNL表达式时,尤其是在Struts2的标签中,需要特别注意`#`、`%`这两个符号的使用。`#`符号有三个主要用途: 1. 访问非根对象,如OGNL上下文和Action上下文,`#`常用于访问ActionContext中的各种上下文属性。 ...
2. **Struts2框架**:Struts2的Action和Result配置、拦截器参数传递、JSP标签等都大量使用OGNL,使其成为表现层与业务层交互的关键。 四、学习资源与实践 1. **OGNL文档**:官方文档详尽解释了OGNL的所有特性和用法...
你可以从标签中的“源码”出发,了解其内部实现,包括解析器、上下文管理、类型转换等机制。 ### 工具支持 在开发过程中,有一些工具可以帮助调试和测试OGNL表达式,例如使用Struts 2的`ognl3-examples`项目,或者...
OGNL允许开发者通过简单的字符串表达式来获取或设置对象的属性,甚至调用方法、操作数组和集合等。例如,`user.name`可以用来获取名为`user`的对象的`name`属性值。 2. **EL简介** EL是Java EE规范的一部分,主要...
OGNL表达式通常结合Struts2的标签一起使用,比如使用 `<s:property value="expression"/>` 来展示数据。在使用过程中,需要注意#、%和$这三个符号的正确使用: - **#**:通常用于表示OGNL表达式,在Struts2中作为...
总的来说,OGNL是Struts2框架中不可或缺的一部分,它提供了一种强大而灵活的方式来访问和操作对象属性,结合Struts2的标签,使得视图层和模型层之间的数据交互变得简单且高效。通过理解OGNL的工作原理和在Struts2中...
以一个简单的例子说明OGNL的工作原理: ```java Action action = new Action(); action.setName("John"); Map, Object> context = new HashMap(); context.put("action", action); String expression = "action.name...
OGNL表达式可以是简单的属性引用,也可以是复杂的运算表达式。它支持算术、比较、逻辑操作符,以及函数调用和自定义方法。例如,`a + b`、`a > b`、`!(c == null)`等。 3. **OGNL与标签的结合** 在Web开发中,...
OGNL是一种强大的表达式语言,允许开发者通过简单的字符串表达式来访问和修改对象图。在Struts2中,OGNL用于在Action和视图之间传递数据,以及在表单提交后自动将请求参数映射到Action属性。 OGNL表达式的基本语法...
4. JSP标签库:Struts2提供了丰富的JSP标签库,这些标签内部也大量使用了OGNL来获取和显示数据。 四、OGNL的安全性问题 由于OGNL的强大功能,如果不加以限制,可能会引发安全风险,比如OGNL注入。攻击者可以通过...
在"TestOGNL"案例中,我们可能看到一个简单的Struts2应用,其中包含一个Action类和一个对应的JSP页面。Action类可能会有如下属性: ```java public class TestAction { private String name; private List...
1. **动态属性访问**:OGNL允许通过简单的字符串表达式访问和修改对象的属性,无需预先知道对象的类结构。 2. **方法调用**:可以调用对象的方法,支持参数传递。 3. **表达式计算**:支持数学运算、逻辑运算以及...
不过需要注意的是,OGNL表达式通常需要嵌入在Struts2的特定标签内才能发挥作用。 4. **OGNL的六种使用方法**:在实际应用中,OGNL表达式具有多种用途,包括但不限于: - **基本用法**:如上例所示,直接通过对象...
在Struts2框架中,OGNL被用来在Action类与JSP页面之间传递数据,通过简单的表达式可以方便地获取或设置对象属性。 2. **OGNL语法**:OGNL表达式通常以`.`操作符为核心,例如`user.name`表示获取名为`user`的对象的`...
接下来,我们将详细介绍 `siterator` 标签的使用和 OGNL 的用法。 1. **siterator 标签的属性**: - **value**:这是必需的属性,用于指定要迭代的集合。可以是直接的值,如数组或 Map,也可以是从 Action 中返回...
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
例如,JSTL的`c:forEach`标签可以用来遍历一个集合,然后使用OGNL表达式来访问每个元素的属性。这样,开发者可以在JSP页面上直接使用Ognl表达式来显示动态数据,而无需在JSP页面中混杂大量的Java代码。 **学习笔记...
OGNL不仅可以访问简单的属性,还可以处理复杂的对象关系,如集合、Map等。其主要特性包括: 1. 直接属性访问:如`user.name`,直接获取`user`对象的`name`属性。 2. 集合和数组操作:如`users[0].name`,获取集合或...
在这个例子中,`s:textfield`标签通过OGNL自动将表单字段与`RegistrationAction`中的`User`对象的属性进行绑定。当用户填写完表单并提交后,Struts2会自动将表单数据转换为`User`对象,然后调用`execute()`方法进行...