- 浏览: 173722 次
- 性别:
- 来自: 苏州
最新评论
-
jsruth:
学习了,请教下使用C3P0连接池,配置好hibernate.c ...
Hibernate 连接池配置(C3PO and proxool) -
oliveevilo:
试了一下后面的mysqldump 也没成功,求指教
MySql 导入和导出xml文件实例 -
oliveevilo:
我使用你这里说的第一种方法为什么不行,我的是mysql 5.6 ...
MySql 导入和导出xml文件实例 -
luofuyong:
很管用,谢谢哦
PLSQL Developer 注册 -
zl0828:
很全,很详细。搞不懂为什么没有人评论支持呢。我来加一把劲,支持 ...
DisplayTag
Action和jsp的开发其实就是对Struts标签的运用.掌握标签的熟练程度决定了开发效率.初学者往往对某个数据表示或数据获取,束手无策.一个简单的问题浪费一两天时间也就不足为怪了.导致整个开发进度延后.外面的struts书籍介绍标签和数据传输原理都比较简单,下面我对标签技术和数据传输原理,进行全方位多角度的剖析.希望对各位有所帮助.以此为模版,将大大提高开发效率.以sample为机能名称.
①画面上有一text框,显现内容为某一数据表中的某一字段.那我们该如何设置和得到此数据呢?
SampleJsp:
SampleForm.java: // form文件名必须和jsp中标签的name对应
String name; // 必须和jsp中该项目的property一样
public String getName() { return name; }
public void setName(String name) { this.name = name;}
变量和方法名,不可以顺意.变量abcd,那方法名就是setAbcd和getAbcd.注意大小写.
jsp中的项目必然全部在form里面有所表示,当然反过来,form里的项目在jsp中不一定全部表示(可能有辅助动作的对象或验证)
SampleAction.java
public ActionForward start(ActionMapping mapping,
ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
throws Exception {
SampleForm form = (SampleForm) argForm;
String name = ………………other codes for get name from db
// set name
form.setName(name);
// now text will show the name
}
public ActionForward save(ActionMapping mapping,
ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
throws Exception {
SampleForm form = (SampleForm) argForm;
// get name
String name = form.getName();
………………other codes for save name
}
jsp和form对应,action操作form,form其实起了传输数据的作用.这就是struts标签的核心原理.得到数据和设置数据没问题了,剩下的工作也就得心应手了.
②再看一个处理标签的方法.画面上是一个明细一览表示(表).表示的是数据表user的相关数据(id,name).
SampleJsp:
logic:present是逻辑判断,sampleForm中userList为空(无数据或null),下面的东东不显示.
logic:iterate是逻辑循环,userList有几条数据,就循环几次.
是lable标签,显示user这个对象(entity)的id属性.或者说显示数据表user中的一条记录中的id这个列.
User.java(就是entity,因为和业务密切,高达不开发,切记切记不可顺意修改.遇到设计有问题,QA日本)
String id;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
String name;
public String getName () { return name; }
public void setName (String name) { this.name = name; }
看到这,是否觉得面熟啊,好象和FORM一样,但有点不一样,不一样在哪里,看下去后,自己感悟吧.
SampleForm.java:
List userList;
public List getUserList () { return userList; }
public void setUserList (List userList) { this.userList = userList; }
form只要这些,那你会问,id和name,struts如何能得到呢?你不是说过jsp必须和form一样对应吗?不错,一一对应是肯定的. UserList信息已经包含了一切,还需要定义id和name吗?至于struts如何得到数据,那就看下面的action是如何处理的吧.
SampleAction.java
public ActionForward start(ActionMapping mapping,
ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
throws Exception {
SampleForm form = (SampleForm) argForm;
ArrayList userList = new ArrayList();
User user = new User();
user.setId(1);
user.setName(“name1”);
userList.add(user);
User user = new User();
user.setId(2);
user.setName(“name2”);
userList.add(user);
// set userList
form.setUserList(userList);
// now table will show
}
一切搞定.是不是很简单,但估计你还是有点晕.你还是想问我,id和name到底是如何设置的?
Action设置了userList就够了,它包含够多的信息了. struts看见了你设置了userList.它就知道了这个list里面都user(entity),useruser(entity)里面不是有很多get,set方法吗?
再看下下面的东东.
id=”user”,和name="user" 对应了,明白啥意思吗?.就象循环指明索引一样. property="id"就是要显示的这个索引对应的内容.Struts就是这样来认id和name的.
③接下来,看一个加强版的table例子,在显示的明细一览,每一行前面加一个radio框,让用户选择哪个user.进行删除操作.
SampleJsp:
sampleForm.java:
String selectedUserId;
public String getSelectedUserId () { return selectedUserId; }
public void setSelectedUserId(String selectedUserId) {
this.selectedUserId = selectedUserId;
}
SampleAction.java
public ActionForward delete(ActionMapping mapping,
ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
throws Exception {
SampleForm form = (SampleForm) argForm;
String selectedUserId = form.getSelectedUserId();
// get user by selected id
User user = getUser(selectedUserId);
// delete user
}
radio框. propertys值对应form里的对象.value值是该行radio对应的user中的id(数据表中user的id是主键),那么当用户选中任何一个radio,struts通过form得到propertys值,就可以得到选中哪个user了,然后进行相应操作.
设置哪个user被选中,一是通过用户选择,没的说.二,通过程序控制,如果进入初期画面,我要让user.id = ‘3’的radio被选中,只要在初期Action中form.selectedUserId(“3”);一切搞定,就一句话,进入初期画面时, user.id = ‘3’的radio被选中了.
注意以下标签
下面发挥想象一下以下标签啥意思?
能看出来什么?
User包含object1,object2包含object3,….objectN-1包含objectN,objectN有id属性.
看出来了吗?灵活运用,想象一下,各个entity和form,action该如何写?
④接着介绍一下,checkbox是使用.画面有一排checkbox,如何设置和得到数据呢?先看一个简单点的.
第二个框未选中,其他选中.form里面对应三个String chechbox1,chechbox2, chechbox3;下面来个复杂点的,多选择对话框multibox
SampleJsp中:
SampleForm中:
private String userList[] = new String[0];
public String[] getUserList () { return userList;}
public void setUserList(String[]userList) {this.userList = userList;}
private String selectedUsers[] = new String[0];
public String[] getSelectedUsers () {return selectedUsers;}
public void setSelectedUsers (String[]selectedUsers) {this.selectedUsers = selectedUsers;}
如果我们在初期时在action里对bean赋值:
userList = { User(”1”,”name1”), User(”2”, ”name2”), User(”3”,”name3”) }
selectedUsers = {“1”,”3”}
那画面选中第一第三个选择框.
用户修改选择框,选择了第二,第三个,那么在action里取bean的值
String selectedItems[] = new String[list.getSize()];
selectedItems = form.getSelectedItems();
for ( int i = 0 ; i < selectedItems.length ; ++i ){
LOGGER.debug( "selected " + i + ": " + selectedItems[i]);
}
Selected 0 : 2
Selected 1 : 3
selectedUsers = {“2”,”3”}
⑤画面上有一user表,每条数据前面有个button,对应一条记录,如何确定选中那条数据呢??
SampleJsp:
SampleAction.java
int index = Integer.parseInt(form.getSelectUserIndex());
通过一个隐藏变量,得到选中第几条数据,然后就能做相应处理.
⑥上面都是通过form和jsp传输数据的.还有session也能让jsp显示数据.但如果我做为设计者,是不提倡这样做的.为什么就不说了.但日本以前的设计很可能会用到session和jsp传数据.那我就有必要讲一下如何用了?做为高达的设计者还是尽量不要用session和jsp沟通.
有个下拉列表框,里面显示所有用户名称.用session传数据.
SampleJsp:
<%pageContext.setAttribute("userList",(List) (FwThreadContext
.getAttribute("AllUser")));
%>
SampleForm.java:
String selectedUser;
Form里只要一个selectedUser,表示选择的user. 下拉列表框用session表示.
在action等地方设置了session的内容,那下拉列表框就能显示内容了.这里session名为AllUser, labelProperty="name"是下拉列表框显示的东东, property="id"是下拉列表框每条数据隐藏的东东.通过property="selectedUser"里得到选中那条数据
这里很简单就是把session名为UserName设置到Text框中.得的时候还是通过form中的name得到.
标签宝典:
1,lable
2,text
3,button
4,select
5,checkbox,multibox
6, 循环逻辑
7,if逻辑
发表评论
-
JAVA HotSwap
2011-08-23 17:37 3561Hotswap 是一个允许在运行状态下无限制的修改 ... -
项目中用到的JPA Annotation 之二:Inheritance
2011-06-29 20:35 931Target: Classes Defines th ... -
项目中用到的JPA Annotation 之一:DiscriminatorColumn
2011-06-29 19:58 1842Target: ClassesSpecifies the di ... -
解决MAVEN内存溢出
2011-05-18 15:34 1613解决Maven中OutOfMemory错误Windows环 ... -
EL 表达式不能解析
2011-03-30 15:44 1551今天学习spring的MVC框架,发现EL 表达式 ... -
Java 自带 MD5 加密
2010-08-25 10:22 2243package com.exigenservice.er ... -
JPDA:Java平台调试架构
2010-05-17 10:20 1308在无法访问运行中的实例时,调试一个Java ... -
配置log4j输出ibatis的SQL语句
2009-12-09 14:38 3056ibatis不像hibernate那样在配置文件中注明是否输出 ... -
Java try catch finally的执行顺序
2009-11-30 13:43 12654关于Java中try catch finally ... -
java 连接 Mysql,Oracle,MSSQL
2009-05-14 15:56 1572MySql: Class.forName(" ... -
Lucene检索文件(txt,jsp,html)
2009-02-05 21:47 2216Lucene检索文件包裹txt,jsp,html格式(如果是w ... -
java中的值传递和引用传递
2009-02-04 12:59 1210值传递:方法调 ... -
Serializable作用
2008-12-19 09:26 2519没有implements Serializable ... -
锚的用法
2008-12-15 13:34 1532链接有两种,一种是不同页面间的链接。另外一种是页内链接,我们一 ... -
清晰了解String操作
2008-10-25 07:49 1180我们来看一段再经典不过的程序: class StringTes ... -
细说java.util包
2008-10-23 10:09 972线性表,链表,哈希 ... -
浅析Java语言中两种异常的差别
2008-10-12 11:37 1135Java提供了两类主要的异 ... -
struts 2 标签之<s:tree/>和<s:treenode/>简单实例
2008-09-19 09:37 3066代码: <%@ page language=" ... -
struts2标签的定义文件 struts-tags.tld
2008-09-19 09:35 8812在工程中使用struts2标签 一、struts2标签定义文 ... -
DisplayTag
2008-09-08 14:02 1653用了一段时间的Display Ta ...
相关推荐
struts标签 • Bean Tags:该标签库包含的标签可以用来创建bean、访问bean和访问bean的属性。同时提供了依据cookies、headers和parameters的值创建相关bean的能力。 HTML Tags:该标签库包含的标签可以用来创建...
struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库
Struts2标签库Struts2标签库Struts2标签库Struts2标签库Struts2标签库Struts2标签库
struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签
struts2标签库struts2标签库struts2标签库struts2标签库
Struts标签 Struts标签Struts标签Struts标签Struts标签
struts2 标签库介绍(html)对Struts2的标签做了详细的介绍让你轻松掌握Struts2的标签。 STRUTS2学习文档.pdf 对Struts2的一些配置文件进行了详细的说明。 Struts2―表单验证validate(html)对validate的type属性...
Struts标签 大全
Struts 标签 页面跳转 数据库操作 Struts 标签 页面跳转 数据库操作 Struts 标签 页面跳转 数据库操作
struts2标签,史上最详细的struts2标签介绍
struts框架详细介绍,详细的介绍了struts的配置,数据流程,标签等知识,是课件
Struts标签详细描述,可以作为参考文档
struts 2标签库介绍struts 2标签库介绍struts 2标签库介绍struts 2标签库介绍struts 2标签库介绍
struts2标签介绍 tag struts2标签介绍 tag
struts2标签使用例子 struts2标签使用例子 struts2标签使用例子struts2标签使用例子
Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。 HTML 标签 : 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 ...Nested标签: 增强对其他的Struts 标签的嵌套使用的能力
struts标签库里面包括struts所有的标签使用源码
Struts标签 和jstl标签Struts标签 和jstl标签
主要介绍了struts2的标签的详细使用例子说明
Struts标签库Struts标签库Struts标签库案例